跳转到内容
RA2DIY-WIKI 当前处于维护模式:页面上的内容随时可能发生更改且不会事先告知。

MediaWiki:Common.js

来自RA2DIY
九千天华留言 | 贡献2025年5月4日 (日) 20:08的版本

注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的更改的影响。

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-R(Mac为⌘-R
  • Google Chrome:Ctrl-Shift-R(Mac为⌘-Shift-R
  • Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5
/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */
(function() {
    function processPreBlocks() {
        var preElements = document.querySelectorAll('pre');
        
        preElements.forEach(function(pre) {
            var rawContent = pre.textContent;
            var lines = rawContent.split('\n').filter(l => l !== '');
            var totalLines = lines.length;
            
            // 创建容器
            var container = document.createElement('div');
            container.style.display = 'flex';
            
            // 添加行号列
            var lineNumberCol = document.createElement('div');
            lineNumberCol.className = 'line-number';
            for (var i = 1; i <= totalLines + 4; i++) {
                var lineNum = document.createElement('div');
                lineNum.textContent = i;
                lineNumberCol.appendChild(lineNum);
            }
            
            // 添加代码内容
            var codeContent = document.createElement('div');
            codeContent.className = 'code-block';
            lines.forEach(function(line) {
                var lineDiv = document.createElement('div');
                lineDiv.className = 'line';
                
                // 处理不同行类型
                if (line.startsWith('[')) {
                    lineDiv.className += ' line-command';
                    lineDiv.innerHTML = line.replace(/\[(.*?)\]/g, '<b>$&</b>');
                } else if (line.startsWith(';')) {
                    lineDiv.className += ' line-comment';
                    lineDiv.textContent = line;
                } else if (line.includes('=')) {
                    var parts = line.split('=');
                    var key = parts.shift();
                    var rest = parts.join('=');
                    
                    lineDiv.innerHTML = [
                        '<span class="line-key">' + key + '</span>',
                        '<span class="line-equal">=</span>',
                        rest.replace(/;(.*)/, '<span class="line-value-comment">;$1</span>')
                    ].join('');
                } else {
                    lineDiv.textContent = line;
                }
                codeContent.appendChild(lineDiv);
            });
            
            // 添加额外空行
            for (var i = 0; i < 4; i++) {
                var emptyLine = document.createElement('div');
                emptyLine.className = 'line';
                emptyLine.innerHTML = '&nbsp;';
                codeContent.appendChild(emptyLine);
            }
            
            // 组合元素
            container.appendChild(lineNumberCol);
            container.appendChild(codeContent);
            
            // 替换原始pre元素
            pre.parentNode.replaceChild(container, pre);
        });
    }

    // 在页面加载完成后执行
    if (window.addEventListener) {
        window.addEventListener('load', processPreBlocks);
    } else if (window.attachEvent) {
        window.attachEvent('onload', processPreBlocks);
    }
})();