MediaWiki:Common.js:修订间差异

来自開源之海
Johnson留言 | 贡献
创建页面,内容为“这里的任何JavaScript将为所有用户在每次页面加载时加载。:​ 核心修復:1.43 Source 模式全能補全監聽器:​ mw.hook('ve.activationComplete').add(function() { var surface = ve.init.target.getSurface(); if (surface && surface.getMode() === 'source') { // 定義觸發符號與對應指令的映射關係 var completionMap = { '[[': 'link', // 連結補全 '{{': 'te…”
 
Johnson留言 | 贡献
无编辑摘要
第1行: 第1行:
/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */
/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */
/* 核心修復:1.43 Source 模式全能補全監聽器 */
$(function() {
mw.hook('ve.activationComplete').add(function() {
    var $toc = $('#toc');
     var surface = ve.init.target.getSurface();
     var $rightPane = $('#mw-related-navigation');
     if (surface && surface.getMode() === 'source') {
 
    // 如果頁面有目錄且存在右側欄
     if ($toc.length && $rightPane.length) {
        // 將目錄移動到右側欄的最上方
        $toc.prependTo($rightPane);
          
          
         // 定義觸發符號與對應指令的映射關係
         // 可選:強制顯示目錄(防止某些插件隱藏它)
         var completionMap = {
         $toc.show();
            '[[': 'link',          // 連結補全
       
            '{{': 'template',      // 模板補全
        // 增加一個類名以便自定義樣式
            '[[F': 'media',        // 媒體/文件 (適配 [[File: 或 [[文件:)
        $toc.addClass('sticky-sidebar-toc');
            '[[f': 'media'
        };
 
        surface.getView().$element.on('keyup', function(e) {
            // 僅監聽關鍵的觸發鍵:[ 和 {
            if (['[', '{'].includes(e.key) || [219, 221].includes(e.keyCode)) {
                var surfaceModel = surface.getModel();
                var range = surfaceModel.getSelection().getRange();
                var doc = surfaceModel.getDocument();
               
                // 獲取光標前的字符(取 3 位以兼容 [[F 這種情況)
                var context = doc.data.getText(new ve.Range(range.end - 3, range.end));
               
                // 遍歷映射表進行匹配
                for (var key in completionMap) {
                    if (context.endsWith(key)) {
                        console.log("偵測到觸發符:" + key + ",執行指令:" + completionMap[key]);
                        surface.executeCommand(completionMap[key]);
                        break;
                    }
                }
            }
        });
     }
     }
});
});

2026年4月29日 (三) 22:24的版本

/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */
$(function() {
    var $toc = $('#toc');
    var $rightPane = $('#mw-related-navigation');

    // 如果頁面有目錄且存在右側欄
    if ($toc.length && $rightPane.length) {
        // 將目錄移動到右側欄的最上方
        $toc.prependTo($rightPane);
        
        // 可選:強制顯示目錄(防止某些插件隱藏它)
        $toc.show();
        
        // 增加一個類名以便自定義樣式
        $toc.addClass('sticky-sidebar-toc');
    }
});