MediaWiki:Common.js:修订间差异
外观
创建页面,内容为“→这里的任何JavaScript将为所有用户在每次页面加载时加载。: (function() { // HTML特殊字符转义函数 const escapeHtml = str => String(str).replace(/[&<>"']/g, m => ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }[m])); // INI语法高亮处理器 function highlightINI(preElement) { const rawContent = preElement.textContent; const container = document.createElement('…” |
小无编辑摘要 |
||
| 第1行: | 第1行: | ||
/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */ | /* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */ | ||
(function() { | (function() { | ||
function processPreBlocks() { | |||
var preElements = document.querySelectorAll('pre'); | |||
function | |||
rawContent.split('\n'). | 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); | |||
} | |||
// | // 添加代码内容 | ||
} else if ( | 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); | |||
} | } | ||
})(); | })(); | ||
2025年5月4日 (日) 20:08的版本
/* 这里的任何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);
}
})();