MediaWiki:Gadget-NavFrame.js
外观
注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google Chrome、Firefox、Microsoft Edge及Safari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。
/**
* Dynamic Navigation Bars. See [[Wikipedia:NavFrame]]
*
* Based on script from en.wikipedia.org, 2008-09-15.
*
* @source www.mediawiki.org/wiki/MediaWiki:Gadget-NavFrame.js
* @maintainer Helder.wiki, 2012–2013
* @maintainer Krinkle, 2013
* @maintainer Fantasticfears, 2013
*/
( function () {
// Set up the words in your language
var collapseCaption = wgULS('隐藏', '隱藏');
var expandCaption = wgULS('显示', '顯示');
var navigationBarHide = collapseCaption + '▲';
var navigationBarShow = expandCaption + '▼';
/**
* Shows and hides content and picture (if available) of navigation bars.
*
* @param {number} indexNavigationBar The index of navigation bar to be toggled
* @param {jQuery.Event} e Event object
*/
function toggleNavigationBar( indexNavigationBar, e ) {
var navToggle = $( 'NavToggle' + indexNavigationBar ),
navFrame = $( 'NavFrame' + indexNavigationBar );
if ( !navFrame || !navToggle ) {
return false;
}
// If shown now
if ( navToggle.text() === navigationBarHide ) {
$( navFrame ).find( '.NavPic, .NavContent' ).each(function() {
navChild.style.display = 'none';
});
navToggle.text(navigationBarShow);
// If hidden now
} else if ( navToggle.text() === navigationBarShow ) {
$( navFrame ).find( '.NavPic, .NavContent' ).each(function() {
navChild.style.display = 'block';
});
navToggle.text(navigationBarHide);
}
}
/**
* Adds show/hide-button to navigation bars.
*
* @param {jQuery} $content
*/
function createNavigationBarToggleButton( $content ) {
var indexNavigationBar = 0;
// Iterate over all (new) nav frames
$content.find( 'div.NavFrame' ).each(function() {
var frame = $( this );
// If found a navigation bar
indexNavigationBar++;
var navToggle = '<span class="NavToggle" id="NavToggle' + indexNavigationBar + '"></span>'
frame.find( '.NavHead' ).each(function() {
$( this ).on( 'click', $.proxy( toggleNavigationBar, null, indexNavigationBar ) );
});
if ( frame.hasClass( 'collapsed' ) ) {
frame.find( '.NavPic, .NavContent' ).each(function() {
$( this ).css( 'display', 'none' );
});
}
var showNavigationBarHide = true;
frame.find( '.NavPic, .NavContent' ).each(function() {
if ( $( this ).css( 'display' ) === 'none' ) {
showNavigationBarHide = false;
return;
}
});
// Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
frame.find( '.NavHead' ).each(function() {
$( this ).append( navToggle ).text( showNavigationBarHide? navigationBarHide: navigationBarShow );
});
frame.attr( 'id', 'NavFrame' + indexNavigationBar );
});
}
mw.hook( 'wikipage.content' ).add( createNavigationBarToggleButton );
}());