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留言 | 贡献
无编辑摘要
 
(未显示同一用户的3个中间版本)
第1行: 第1行:
/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */
/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */
/* 核心修復:1.43 Source 模式全能補全監聽器 */
/*
mw.hook('ve.activationComplete').add(function() {
$(function() {
     var surface = ve.init.target.getSurface();
    // 檢查是否為 Timeless 面板且存在目錄和右側欄
     if (surface && surface.getMode() === 'source') {
     var $toc = $('#toc');
       
     var $rightColumn = $('#mw-related-navigation');
        // 定義觸發符號與對應指令的映射關係
        var completionMap = {
            '[[': 'link',          // 連結補全
            '{{': 'template',      // 模板補全
            '[[F': 'media',        // 媒體/文件 (適配 [[File: 或 [[文件:)
            '[[f': 'media'
        };


        surface.getView().$element.on('keyup', function(e) {
    if ($toc.length && $rightColumn.length) {
            // 僅監聽關鍵的觸發鍵:[ 和 {
        // 建立一個符合 Timeless 風格的包裝層
            if (['[', '{'].includes(e.key) || [219, 221].includes(e.keyCode)) {
        var $tocWrapper = $('<div id="p-toc-sidebar" class="sidebar-chunk"></div>');
                var surfaceModel = surface.getModel();
        var $tocTitle = $('<h3>').text($toc.find('.toctitle h2').text() || '目錄');
                var range = surfaceModel.getSelection().getRange();
        var $tocInner = $('<div class="sidebar-inner"></div>');
                var doc = surfaceModel.getDocument();
 
               
        // 搬移目錄內容
                // 獲取光標前的字符(取 3 位以兼容 [[F 這種情況)
        $tocInner.append($toc.find('ul'));
                var context = doc.data.getText(new ve.Range(range.end - 3, range.end));
        $tocWrapper.append($tocTitle).append($tocInner);
               
 
                // 遍歷映射表進行匹配
        // 插入到右側欄的最頂端
                for (var key in completionMap) {
        $rightColumn.prepend($tocWrapper);
                    if (context.endsWith(key)) {
 
                        console.log("偵測到觸發符:" + key + ",執行指令:" + completionMap[key]);
        // 隱藏原本在文章頭部的目錄
                        surface.executeCommand(completionMap[key]);
         $toc.remove();
                        break;
                    }
                }
            }
         });
     }
     }
});
});
*/

2026年5月5日 (二) 18:12的最新版本

/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */
/*
$(function() {
    // 檢查是否為 Timeless 面板且存在目錄和右側欄
    var $toc = $('#toc');
    var $rightColumn = $('#mw-related-navigation');

    if ($toc.length && $rightColumn.length) {
        // 建立一個符合 Timeless 風格的包裝層
        var $tocWrapper = $('<div id="p-toc-sidebar" class="sidebar-chunk"></div>');
        var $tocTitle = $('<h3>').text($toc.find('.toctitle h2').text() || '目錄');
        var $tocInner = $('<div class="sidebar-inner"></div>');

        // 搬移目錄內容
        $tocInner.append($toc.find('ul'));
        $tocWrapper.append($tocTitle).append($tocInner);

        // 插入到右側欄的最頂端
        $rightColumn.prepend($tocWrapper);

        // 隱藏原本在文章頭部的目錄
        $toc.remove();
    }
});
*/