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

MediaWiki:Common.js:修订间差异

来自RA2DIY
无编辑摘要
无编辑摘要
第1行: 第1行:
// 处理<mco>标签的脚本
// 添加悬停计时器到行或段落
(function() {
(function() {
     function escapeHtml(unsafe) {
     // 目标元素选择器(可根据需要调整)
        return unsafe
    var selectors = 'tr, p';
            .replace(/&/g, "&amp;")
   
            .replace(/</g, "&lt;")
    document.querySelectorAll(selectors).forEach(function(element) {
            .replace(/>/g, "&gt;")
         var hoverTimer;
            .replace(/"/g, "&quot;")
            .replace(/'/g, "&#039;");
    }
 
    function processMcoElements() {
         var mcoElements = document.getElementsByTagName('mco');
          
          
         Array.prototype.forEach.call(mcoElements, function(mco) {
         element.addEventListener('mouseenter', function() {
            var content = mco.textContent.trim();
             // 启动3秒计时器
            var lines = content.split('\n');
             hoverTimer = setTimeout(function() {
            var totalLines = lines.length;
                 element.classList.add('line');
           
             }, 3000);
            // 创建容器
            var container = document.createElement('div');
            container.className = 'mco-container';
           
             // 添加行号列
            var lineNumberDiv = document.createElement('div');
            lineNumberDiv.className = 'line-number';
            for (var i = 1; i <= totalLines + 4; i++) {
                lineNumberDiv.innerHTML += '<div>' + i + '</div>';
            }
            container.appendChild(lineNumberDiv);
           
            // 添加代码块
            var codeBlock = document.createElement('div');
             codeBlock.className = 'code-block';
           
            lines.forEach(function(line) {
                var lineDiv = document.createElement('div');
                lineDiv.className = 'line';
                line = line.trimRight();
               
                if (line === '') {
                    lineDiv.innerHTML = '<br>';
                } else if (line.startsWith('[')) {
                    lineDiv.style.backgroundColor = '#F2F4FF';
                    lineDiv.innerHTML = '<span style="color:#8000FF;font-weight:bold">' + escapeHtml(line) + '</span>';
                } else if (line.startsWith(';')) {
                    lineDiv.innerHTML = '<span style="color:#008000">' + escapeHtml(line) + '</span>';
                } else if (line.includes('=')) {
                    var eqIndex = line.indexOf('=');
                    var key = escapeHtml(line.substring(0, eqIndex));
                    var rest = escapeHtml(line.substring(eqIndex + 1));
                    var semicolonIndex = rest.indexOf(';');
                   
                    if (semicolonIndex !== -1) {
                        var value = rest.substring(0, semicolonIndex);
                        var comment = rest.substring(semicolonIndex);
                        lineDiv.innerHTML = '<i style="color:#0000FF">' + key + '</i>' +
                            '<span style="color:#FF0000">=</span>' +
                            value +
                            '<span style="color:#006400">' + comment + '</span>';
                    } else {
                        lineDiv.innerHTML = '<i style="color:#0000FF">' + key + '</i>' +
                            '<span style="color:#FF0000">=</span>' +
                            rest;
                    }
                 } else {
                    lineDiv.textContent = line;
                }
                codeBlock.appendChild(lineDiv);
            });
           
            // 添加空行
            for (var i = 0; i < totalLines + 3 - lines.length; i++) {
                var emptyLine = document.createElement('div');
                emptyLine.className = 'line';
                emptyLine.innerHTML = '<br>';
                codeBlock.appendChild(emptyLine);
             }
           
            container.appendChild(codeBlock);
            mco.parentNode.replaceChild(container, mco);
         });
         });
    }
       
 
         element.addEventListener('mouseleave', function() {
    // 在页面加载时运行
            // 清除计时器并移除样式
    if (window.addEventListener) {
            clearTimeout(hoverTimer);
         window.addEventListener('load', processMcoElements);
            element.classList.remove('line');
    } else if (window.attachEvent) {
        });
        window.attachEvent('onload', processMcoElements);
     });
     }
})();
})();

2025年5月4日 (日) 20:52的版本

// 添加悬停计时器到行或段落
(function() {
    // 目标元素选择器(可根据需要调整)
    var selectors = 'tr, p';
    
    document.querySelectorAll(selectors).forEach(function(element) {
        var hoverTimer;
        
        element.addEventListener('mouseenter', function() {
            // 启动3秒计时器
            hoverTimer = setTimeout(function() {
                element.classList.add('line');
            }, 3000);
        });
        
        element.addEventListener('mouseleave', function() {
            // 清除计时器并移除样式
            clearTimeout(hoverTimer);
            element.classList.remove('line');
        });
    });
})();