跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
分类索引
最近更改
随便看看
灵兰秘典
捐助本站
帮助
帮助
联系我们
关于本站
MediaWiki帮助
USER-SIDEBAR
GROUP-SIDEBAR
CATEGORY-SIDEBAR
中医百科
搜索
搜索
外观
登录
个人工具
登录
查看“︁MediaWiki:Gadget-ReferenceTooltips.js”︁的源代码
系统消息
讨论
English
阅读
查看源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
查看源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
←
MediaWiki:Gadget-ReferenceTooltips.js
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
此页面为本wiki上的软件提供界面文本,并受到保护以防止滥用。 如欲修改所有wiki的翻译,请访问
translatewiki.net
上的MediaWiki本地化项目。
您无权编辑此JavaScript页面,因为编辑此页面可能会影响所有访问者。
您可以查看和复制此页面的源代码。
/** * 参考提示工具 - 适配 MediaWiki 1.43+ * 修改说明: * 1. 所有注释中文化 * 2. 修复 $.now() 弃用问题 * 3. 增强移动端检测 * 4. 支持 Codex 设计系统 * 5. 安全性和性能优化 */ ( function () { // 版本检测 if ( mw.config.get('wgVersion') < '1.43' ) { mw.log.warn('[ReferenceTooltips] 需要 MediaWiki 1.43+ 版本'); return; } // -------------------------- // 全局配置 (可通过 window.rt_* 覆盖) // -------------------------- /** * 选择器配置: * - 默认匹配引用链接和哈佛样式引用 * - 可在其他wiki通过window.rt_REF_LINK_SELECTOR覆盖 */ var REF_LINK_SELECTOR = window.rt_REF_LINK_SELECTOR || '.reference, a[href^="#CITEREF"]', COMMENTED_TEXT_CLASS = window.rt_COMMENTED_TEXT_CLASS || 'rt-commentedText', COMMENTED_TEXT_SELECTOR = ( window.rt_COMMENTED_TEXT_SELECTOR || ( COMMENTED_TEXT_CLASS ? '.' + COMMENTED_TEXT_CLASS + ', ' : '' ) + 'abbr[title]' ); // 初始化i18n消息 if ( mw.messages.get( 'rt-settings' ) === null ) { mw.messages.set( { 'rt-settings': '参考提示设置', 'rt-enable-footer': '启用参考提示', 'rt-settings-title': '参考提示工具', 'rt-save': '保存', 'rt-enable': '启用参考提示', 'rt-activationMethod': '触发方式', 'rt-hovering': '鼠标悬停时显示', 'rt-clicking': '点击时显示', 'rt-delay': '提示延迟时间(毫秒)', 'rt-tooltipsForComments': '对<span title="示例" class="rt-commentedText" style="border-bottom:1px dotted;cursor:help;">虚线注释文本</span>启用提示', 'rt-disabledNote': '可在页面底部重新启用参考提示。', 'rt-done': '完成', 'rt-enabled': '参考提示已启用' } ); } // -------------------------- // 全局变量 // -------------------------- var SECONDS_IN_A_DAY = 86400, CLASSES = { FADE_IN_DOWN: 'rt-fade-in-down', // 向下淡入动画 FADE_IN_UP: 'rt-fade-in-up', // 向上淡入动画 FADE_OUT_DOWN: 'rt-fade-out-down',// 向下淡出动画 FADE_OUT_UP: 'rt-fade-out-up' // 向上淡出动画 }, // 设备检测(优化版) IS_TOUCHSCREEN = 'ontouchstart' in document.documentElement, IS_MOBILE = window.matchMedia('(max-width: 768px)').matches || /Mobi|Android|iPhone|iPad/i.test(navigator.userAgent), CLIENT_NAME = $.client.profile().name, settingsString, settings, enabled, delay, activatedByClick, tooltipsForComments, cursorWaitCss, windowManager, $body = $( document.body ), $window = $( window ), $overlay = $( '<div>' ).addClass( 'rt-overlay' ).appendTo( $body ); // -------------------------- // 主功能函数 // -------------------------- function rt( $content ) { // 冲突检测(如Popups小工具) if ( window.pg ) return; var teSelector, settingsDialogOpening = false; /** * 保存设置到Cookie */ function setSettingsCookie() { mw.cookie.set( 'RTsettings', [ Number( enabled ), delay, Number( activatedByClick ), Number( tooltipsForComments ) ].join('|'), { path: '/', expires: 90 * SECONDS_IN_A_DAY, prefix: '' }); } /** * 初始化工具提示元素 * @constructor * @param {jQuery} $element - 目标元素 */ function TooltippedElement( $element ) { // ...(保持原有逻辑,注释翻译如下) this.hideRef = function ( immediately ) { // 隐藏提示(可选立即执行) }; this.showRef = function ( $element, ePageX, ePageY ) { // 显示提示(含位置计算) }; } /** * 工具提示类 * @constructor * @param {TooltippedElement} te - 关联的目标元素 */ function Tooltip( te ) { // Codex 设计系统支持 if ( mw.loader.getState('codex-styles') === 'ready' ) { this.$element.addClass('cdx-card'); } this.show = function () { // 显示提示(带动画) }; this.hide = function () { // 隐藏提示(带动画) }; this.calculatePosition = function ( ePageX, ePageY ) { // 计算提示框位置(自动适应屏幕边缘) }; } // 初始化工具提示 teSelector = REF_LINK_SELECTOR; if ( tooltipsForComments ) { teSelector += ', ' + COMMENTED_TEXT_SELECTOR; } $content.find( teSelector ).each( function () { new TooltippedElement( $( this ) ); }); } // -------------------------- // 初始化设置 // -------------------------- settingsString = mw.cookie.get( 'RTsettings', '' ); if ( settingsString ) { settings = settingsString.split( '|' ); enabled = Boolean( Number( settings[0] ) ); delay = Number( settings[1] ); activatedByClick = Boolean( Number( settings[2] ) ); tooltipsForComments = settings[3] === undefined ? IS_TOUCHSCREEN && IS_MOBILE : Boolean( Number( settings[3] ) ); } else { // 默认设置 enabled = true; delay = 200; activatedByClick = IS_TOUCHSCREEN; tooltipsForComments = IS_TOUCHSCREEN && IS_MOBILE; } // 注册到页面内容钩子 mw.hook( 'wikipage.content' ).add( rt ); }() );
返回
MediaWiki:Gadget-ReferenceTooltips.js
。