User:YFdyh000/DisambigStylizedTitle.js
外观
注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google Chrome、Firefox、Microsoft Edge及Safari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。
$(document).ready(function () {
const titleEl = $('#firstHeading .mw-page-title-main');
if ( !titleEl.length) return;
const originalTitle = $('#firstHeading .mw-page-title-main')[0].innerText;
const matchResult = originalTitle.match(/ \((.+)\)$/);
const colorSubtle = getComputedStyle(document.documentElement).getPropertyValue('--color-subtle').length > 0 ?
'var(--color-subtle)' : '#54595d'; // this value is '' in Timeless skin
if (matchResult) {
const isDisambigPage = $('#disambigbox').length > 0;
const baseTitle = titleEl.text().replace(matchResult[0], '')
titleEl.text(baseTitle);
const spanEl = $('<span></span>').text(`(${matchResult[1]})`);
spanEl.addClass('disambig');
spanEl.attr('title', "这是消歧义后缀,页面完整名称的一部分,但不属于该主题的名称");
if (!isDisambigPage) {
spanEl.css({
'font-size': '0.7em',
'color': colorSubtle,
});
} else {
spanEl.css({
'color': colorSubtle,
});
}
titleEl.append(spanEl);
}
//使titleEl的内容被选中并复制时维持originalTitle的括号。
titleEl.on('copy', (e) => {
const selection = window.getSelection();
if (selection.rangeCount > 0) {
const selectedText = selection.toString();
let newText = selectedText;
if (originalTitle.includes('(') && (selectedText.includes('(') || selectedText.includes(')'))) {
newText = selectedText.replace('(', ' (').replace(')', ')');
}
e.originalEvent.clipboardData.setData('text/plain', newText);
e.preventDefault();
}
});
});
function 括号是否为名称的一部分() {
// 中國銀行(香港)
const originalTitle = $('#firstHeading .mw-page-title-main')[0].innerText;
if(originalTitle.includes('(')) {
let firstParagraph = $('#toc').prevAll('p'); // 获取序言
if (firstParagraph.length === 0) { // 没有目录
firstParagraph = $('#mw-content-text p').first()
}
if (firstParagraph.length > 0) {
if (firstParagraph.text().includes(originalTitle)) {
// 序言包含标题,括号大概率非消歧义后缀
return true;
}
}
}
return false;
}