MediaWiki:Gadget-stickyHeading.js
跳到导航
跳到搜索
注意:这类代码页面在保存之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。
- 按住
CTRL+SHIFT+DEL 或 ⌘-Shift-R
来清除缓存! - 或尝试在地址栏的地址最后添加代码
?_=1
来访问最新页面。 - 你还可以在设置中勾选小工具在页面右上角添加清除缓存按钮!
"use strict";
/*global mw, $*/
mw.loader.using(["oojs-ui"]).then(function() {
const nsid = mw.config.get( 'wgNamespaceNumber' ),
pagename = mw.config.get('wgPageName'),
contentModel = mw.config.get( 'wgPageContentModel' ),
skin = mw.config.get('skin'),
gadgets = mw.gadgets || {},
stickyHeading = gadgets.stickyHeading || {},
ns = stickyHeading.namespace || [],
mode = stickyHeading.mode,
collapse = (stickyHeading.collapse !== false);
if ( (mw.config.get('wgNamespaceNumber') == 1) || (mw.config.get('wgNamespaceNumber') == 7) || (mw.config.get('wgNamespaceNumber') == 9) || (mw.config.get('wgNamespaceNumber') == 11) || (mw.config.get('wgNamespaceNumber') == 13) || (mw.config.get('wgNamespaceNumber') == 15)&&contentModel == 'wikitext' &&
((skin == 'vector' && mode != 'mobile') || (skin == 'minerva' && mode != 'desktop')) ) {
mw.hook( 'wikipage.content' ).add(function( $content ) {
console.log('Hook: wikipage.content, 开始添加粘性章节标题');
$content.addClass( 'stickyHeading' );
const headings = $content.find( '.mw-parser-output > h2' );
headings.toArray().reverse().forEach(function(ele) {
$('<div>').addClass( 'section-container' ).insertBefore(ele)
.append( $(ele).nextAll( ':not(.section-container, #toc)' ).add(ele) );
});
$content.addClass( 'collapseHeading' );
const icon = $('<i class="mw-ui-icon-before mw-ui-icon-small mw-ui-icon mw-ui-icon-collapse"></i>');
headings.prepend( icon ).on('click', function(e) {
if ( $(e.target).is('a') ) { return; }
const self = $(this);
self.nextAll().toggleClass( 'sec-hide' );
self.children().first().toggleClass( 'mw-ui-icon-collapse mw-ui-icon-expand' );
});
});
}
});