MediaWiki:Common.js
外观
注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的更改的影响。
- Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5或Ctrl-R(Mac为⌘-R)
- Google Chrome:按Ctrl-Shift-R(Mac为⌘-Shift-R)
- Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5。
// 处理<mco>标签的脚本
(function() {
function escapeHtml(unsafe) {
return unsafe
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">")
.replace(/"/g, """)
.replace(/'/g, "'");
}
function processMcoElements() {
var mcoElements = document.getElementsByTagName('mco');
Array.prototype.forEach.call(mcoElements, function(mco) {
var content = mco.textContent.trim();
var lines = content.split('\n');
var totalLines = lines.length;
// 创建容器
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);
});
}
// 在页面加载时运行
if (window.addEventListener) {
window.addEventListener('load', processMcoElements);
} else if (window.attachEvent) {
window.attachEvent('onload', processMcoElements);
}
})();