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() {
// HTML特殊字符转义函数
const escapeHtml = str => String(str).replace(/[&<>"']/g, m => ({
'&': '&', '<': '<', '>': '>', '"': '"', "'": '''
}[m]));
// INI语法高亮处理器
function highlightINI(preElement) {
const rawContent = preElement.textContent;
const container = document.createElement('div');
container.className = 'ini-container';
rawContent.split('\n').forEach(line => {
line = line.trimRight();
const escapedLine = escapeHtml(line);
// 匹配节头 [section]
if (/^\[.*?\]/.test(escapedLine)) {
const section = escapedLine.match(/^\[(.*?)\]/)[1];
container.innerHTML += `
<div class="ini-section">
<span class="bracket">[</span>
${section}
<span class="bracket">]</span>
</div>`;
// 匹配键值对 key=value
} else if (escapedLine.includes('=')) {
const [key, ...vals] = escapedLine.split('=');
container.innerHTML += `
<div class="ini-line">
<span class="key">${key.trim()}</span>
<span class="equals">=</span>
<span class="value">${vals.join('=').trim()}</span>
</div>`;
// 匹配注释 ;comment
} else if (escapedLine.startsWith(';')) {
container.innerHTML += `
<div class="ini-comment">
${escapedLine}
</div>`;
// 处理空行
} else if (line === '') {
container.innerHTML += '<div class="ini-empty"></div>';
}
});
// 替换原始pre元素
preElement.replaceWith(container);
}
// 页面加载时自动执行
document.addEventListener('DOMContentLoaded', () => {
document.querySelectorAll('pre.ini-highlight').forEach(highlightINI);
});
})();