MediaWiki:Common.js
外观
注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的更改的影响。
- Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5或Ctrl-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 = ' ';
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);
}
})();