User:Aizag/common.js
外观
注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google Chrome、Firefox、Microsoft Edge及Safari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。
// 未經許可,請勿更改
mw.loader.load( '//meta.wikimedia.org/w/index.php?title=User:SuperHamster/CiteUnseen.js&action=raw&ctype=text/javascript' ); // Backlink: [[m:Meta:Cite Unseen]]
mw.loader.load( '/w/index.php?title=User:Aizag/interlangRefCount.js&action=raw&ctype=text/javascript' ); // 跨語言連結顯示引用數
( function () {
'use strict';
var processed = 0;
function update( gallery, counter ) {
var boxes = gallery.querySelectorAll( 'li.gallerybox' );
var current = gallery.querySelector( 'li.gallerybox.slideshow-current' );
var index = Array.prototype.indexOf.call( boxes, current );
counter.textContent = '(' + ( index + 1 ) + '/' + boxes.length + ')';
}
function enhance( buttons ) {
if ( buttons.dataset.galleryCounter ) {
return;
}
var gallery = buttons.closest( 'ul.mw-gallery-slideshow' );
if ( !gallery ) {
return;
}
buttons.dataset.galleryCounter = '1';
processed++;
// 三顆按鈕依序為:上一張、切換縮圖、下一張
var widgets = buttons.querySelectorAll( '.oo-ui-buttonWidget' );
if ( widgets.length < 3 ) {
return;
}
widgets[ 1 ].classList.add( 'zh-slideshow-toggle' );
var counter = document.createElement( 'span' );
counter.className = 'zh-slideshow-counter';
widgets[ 2 ].parentNode.insertBefore( counter, widgets[ 2 ] );
update( gallery, counter );
new MutationObserver( function () {
update( gallery, counter );
} ).observe( gallery, {
attributes: true,
attributeFilter: [ 'class' ],
subtree: true
} );
}
function scan() {
Array.prototype.forEach.call(
document.querySelectorAll( '.mw-gallery-slideshow-buttons' ),
enhance
);
return processed >= document.querySelectorAll( 'ul.mw-gallery-slideshow' ).length;
}
// carousel 由核心模組動態產生,需等它插入 DOM 後才處理
var observer = new MutationObserver( function () {
if ( scan() && processed > 0 ) {
observer.disconnect();
}
} );
mw.hook( 'wikipage.content' ).add( function () {
if ( !scan() ) {
observer.observe( document.body, { childList: true, subtree: true } );
}
} );
}() );