跳转到内容

MediaWiki:Common.js:修订间差异

计算器百科,非营利的计算器专业知识百科。
春上冰月留言 | 贡献
debug
Qinyongr留言 | 贡献
无编辑摘要
 
(未显示2个用户的24个中间版本)
第1行: 第1行:
/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */
/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */
// install [[Wikipedia:User:Cacycle/wikEd]] in-browser text editor
importScriptURI('//en.wikipedia.org/w/index.php?title=User:Cacycle/wikEd.js'
+ '&action=raw&ctype=text/javascript');


// 判断移动端函数,isPC == true 则为 PC 端,isPC == false 则为移动端
/* NavBar 开始 */
function getIsPC() {
mw.loader.using(['mediawiki.util', 'ext.gadget.site-lib'], function () {
  var userAgentInfo = navigator.userAgent;
  (function ($, mw) {
var Agents = new Array("Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod");
 
var flag = true;
/**
  for (var v = 0; v < Agents.length; v++) {
* Dynamic Navigation Bars. See [[Wikipedia:NavFrame]]
  if (userAgentInfo.indexOf(Agents[v]) >= 0) {
*
  flag = false;
* Based on script from en.wikipedia.org, 2008-09-15.
  break;
*
  }
* @source www.mediawiki.org/wiki/MediaWiki:Gadget-NavFrame.js
}
* @maintainer Helder.wiki, 2012–2013
return flag;
* @maintainer Krinkle, 2013
* @maintainer Fantasticfears, 2013-2014
*/
( function () {
 
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 toggle = $( '#NavToggle' + indexNavigationBar ),
                frame = $( '#NavFrame' + indexNavigationBar ),
                isFrameCollapsed;
 
        if ( !frame || !toggle ) {
                return false;
        }
 
isFrameCollapsed = frame.hasClass( 'collapsed' );
        if ( isFrameCollapsed ) {
                frame.find( '> .NavPic, > .NavContent, > .toogleShow' ).each( function() {
                        $( this ).css( 'display', 'block' );
                });
                frame.find( '> .toggleHide' ).each( function() {
                        $( this ).css( 'display', 'none' );
                });
                toggle.text( navigationBarHide );
                frame.removeClass( 'collapsed' );
        } else {
                frame.find( '> .NavPic, > .NavContent, > .toogleShow' ).each( function() {
                        $( this ).css( 'display', 'none' );
                });
                frame.find( '> .toggleHide' ).each( function() {
                        $( this ).css( 'display', 'block' );
                });
                toggle.text( navigationBarShow );
                frame.addClass( 'collapsed' );
        }
}
 
/**
* Adds show/hide-button to navigation bars.
*
* @param {jQuery} $content
  */
function createNavigationBarToggleButton( $content ) {
        // Iterate over all (new) nav frames
        $content.find( 'div.NavFrame' ).each( function( indexNavigationBar ) {
                var frame = $( this ).attr( 'id', 'NavFrame' + indexNavigationBar );
                // If found a navigation bar
                var navToggle = $( '<span class="NavToggle" id="NavToggle' + indexNavigationBar + '"></span>' );
                frame.find( '> .NavHead' ).each( function() {
                        $( this ).on( 'click', $.proxy( toggleNavigationBar, null, indexNavigationBar ) );
                return false;
});
                if ( frame.hasClass( 'collapsed' ) ) {
                        frame.find( '> .NavPic, > .NavContent, > .toggleHide' ).each( function() {
                                $( this ).css( 'display', 'none' );
                        });
                } else {
                        frame.find( '> .toggleShow' ).each( function() {
                                $( this ).css( 'display', 'none' );
                        });
                }
 
                var showNavigationBarHide = true;
                frame.find( '> .NavPic, > .NavContent' ).each( function() {
                        if ( $( this ).css( 'display' ) === 'none' ) {
                                showNavigationBarHide = false;
                                return false;
                        }
                });
 
                navToggle.text( showNavigationBarHide? navigationBarHide: navigationBarShow );
 
                frame.find( '> .NavHead' ).each( function() {
                        $( this ).append( navToggle );
                        return false;
                });
        });
}
 
        mw.hook( 'wikipage.content' ).add( createNavigationBarToggleButton );
 
}());
 
/**
* Collapsible tables
*
* Allows tables to be collapsed, showing only the header. See [[Wikipedia:NavFrame]].
*
* @version 2.0.3 (2014-03-14)
* @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-collapsibleTables.js
* @author [[User:R. Koot]]
* @author [[User:Krinkle]]
* @deprecated Since MediaWiki 1.20: Use class="mw-collapsible" instead which
* is supported in MediaWiki core.
  */
 
var autoCollapse = 2;
var collapseCaption = wgULS('隐藏', '隱藏');
var expandCaption = wgULS('显示', '顯示');
var tableIndex = 0;
 
function collapseTable( tableIndex ) {
    var Button = document.getElementById( 'collapseButton' + tableIndex );
    var Table = document.getElementById( 'collapsibleTable' + tableIndex );
 
    if ( !Table || !Button ) {
        return false;
    }
 
    var Rows = Table.rows;
    var i;
 
    if ( Button.firstChild.data === collapseCaption ) {
        for ( i = 1; i < Rows.length; i++ ) {
            Rows[i].style.display = 'none';
        }
        Button.firstChild.data = expandCaption;
    } else {
        for ( i = 1; i < Rows.length; i++ ) {
            Rows[i].style.display = Rows[0].style.display;
        }
        Button.firstChild.data = collapseCaption;
    }
}
}
var isPC = getIsPC();


// 半隐黑幕
function createClickHandler( tableIndex ) {
function setHeimuTransparent() {
    return function ( e ) {
var heimuArray = document.getElementsByClassName('heimu');
        e.preventDefault();
for (var i = 0; i < heimuArray.length; i++) {
        collapseTable( tableIndex );
  heimuArray[i].style.backgroundColor = '#aaaaaa';
    };
}
}
}


// 在移动端半隐黑幕
function createCollapseButtons( $content ) {
if(!isPC) {
    var NavigationBoxes = {};
  setHeimuTransparent();
    var $Tables = $content.find( 'table' );
    var i;
 
    $Tables.each( function( i, table ) {
        if ( $(table).hasClass( 'collapsible' ) ) {
 
            /* only add button and increment count if there is a header row to work with */
            var HeaderRow = table.getElementsByTagName( 'tr' )[0];
            if ( !HeaderRow ) {
                return;
            }
            var Header = table.getElementsByTagName( 'th' )[0];
            if ( !Header ) {
                return;
            }
 
            NavigationBoxes[ tableIndex ] = table;
            table.setAttribute( 'id', 'collapsibleTable' + tableIndex );
 
            var Button    = document.createElement( 'span' );
            var ButtonLink = document.createElement( 'a' );
            var ButtonText = document.createTextNode( collapseCaption );
            // Styles are declared in [[MediaWiki:Common.css]]
            Button.className = 'collapseButton';
 
            ButtonLink.style.color = Header.style.color;
            ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex );
            ButtonLink.setAttribute( 'href', '#' );
            $( ButtonLink ).on( 'click', createClickHandler( tableIndex ) );
            ButtonLink.appendChild( ButtonText );
 
            Button.appendChild( document.createTextNode( '[' ) );
            Button.appendChild( ButtonLink );
            Button.appendChild( document.createTextNode( ']' ) );
 
            Header.insertBefore( Button, Header.firstChild );
            tableIndex++;
        }
    } );
 
    for ( i = 0; i < tableIndex; i++ ) {
        if ( $( NavigationBoxes[i] ).hasClass( 'collapsed' ) ||
            ( tableIndex >= autoCollapse && $( NavigationBoxes[i] ).hasClass( 'autocollapse' ) )
        ) {
            collapseTable( i );
        }
        else if ( $( NavigationBoxes[i] ).hasClass ( 'innercollapse' ) ) {
            var element = NavigationBoxes[i];
            while ((element = element.parentNode)) {
                if ( $( element ).hasClass( 'outercollapse' ) ) {
                    collapseTable ( i );
                    break;
                }
            }
        }
    }
}
}
mw.hook( 'wikipage.content' ).add( createCollapseButtons );
// 在这行的上面加入其他代码
})});
/* NavBar 结束 */
/* Tabs 开始*/
    function MetaCaixaInit() {
      // S'executa al carregar-se la pàgina, si hi ha metacaixes,
      // s'assignen els esdeveniments als botons
      //alert("MetaCaixaInit");
      var i = 0; // Inicialitzem comptador de caixes
      for (i = 0; i <= 9; i++) {
        var vMc = document.getElementById("mc" + i);
        if (!vMc) break;
        //alert("MetaCaixaInit, trobada Metacaixa mc"+i);
        var j = 1; // Inicialitzem comptador de botons dins de la caixa
        var vPsIni = 0; // Pestanya visible inicial
        for (j = 1; j <= 9; j++) {
          var vBt = document.getElementById("mc" + i + "bt" + j);
          if (!vBt) break;
          //alert("MetaCaixaInit, trobat botó mc"+i+"bt"+j);
          vBt.onclick = MetaCaixaMostraPestanya; // A cada botó assignem l'esdeveniment onclick
          //alert (vBt.className);
          if (vBt.className == "mcBotoSel") vPsIni = j; // Si tenim un botó seleccionat, en guardem l'index
        }
        //alert ("mc="+i+", ps="+j+", psini="+vPsIni );
        if (vPsIni === 0) { // Si no tenim cap botó seleccionat, n'agafem un aleatòriament
          vPsIni = 1 + Math.floor((j - 1) * Math.random());
          //alert ("Activant Pestanya a l'atzar; _mc"+i+"bt"+vPsIni +"_");
          document.getElementById("mc" + i + "ps" + vPsIni).style.display = "block";
          document.getElementById("mc" + i + "ps" + vPsIni).style.visibility = "visible";
          document.getElementById("mc" + i + "bt" + vPsIni).className = "mcBotoSel";
        }
      }
    }
    function MetaCaixaMostraPestanya() {
      // S'executa al clicar una pestanya,
      // aquella es fa visible i les altres s'oculten
      var vMcNom = this.id.substr(0, 3); // A partir del nom del botó, deduïm el nom de la caixa
      var vIndex = this.id.substr(5, 1); // I l'index
      var i = 1;
      for (i = 1; i <= 9; i++) { // busquem totes les pestanyes d'aquella caixa
        //alert(vMcNom+"ps"+i);
        var vPsElem = document.getElementById(vMcNom + "ps" + i);
        if (!vPsElem) break;
        if (vIndex == i) { // Si és la pestanya bona la mostrem i canviem la classe de botó
          vPsElem.style.display = "block";
          vPsElem.style.visibility = "visible";
          document.getElementById(vMcNom + "bt" + i).className = "mcBotoSel";
        } else { // Sinó, l'ocultem i canviem la classe de botó
          vPsElem.style.display = "none";
          vPsElem.style.visibility = "hidden";
          document.getElementById(vMcNom + "bt" + i).className = "mcBoto";
        }
      }
      return false; // evitem la recàrrega de la pàgina
    }
    $(MetaCaixaInit);
/* Tabs 结束 */

2016年7月24日 (日) 06:51的最新版本

/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */

/* NavBar 开始 */
mw.loader.using(['mediawiki.util', 'ext.gadget.site-lib'], function () {
  (function ($, mw) {

/**
 * 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-2014
 */
( function () {

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 toggle = $( '#NavToggle' + indexNavigationBar ),
                frame = $( '#NavFrame' + indexNavigationBar ),
                isFrameCollapsed;

        if ( !frame || !toggle ) {
                return false;
        }

	isFrameCollapsed = frame.hasClass( 'collapsed' );
        if ( isFrameCollapsed ) {
                frame.find( '> .NavPic, > .NavContent, > .toogleShow' ).each( function() {
                        $( this ).css( 'display', 'block' );
                });
                frame.find( '> .toggleHide' ).each( function() {
                        $( this ).css( 'display', 'none' );
                });
                toggle.text( navigationBarHide );
                frame.removeClass( 'collapsed' );
        } else {
                frame.find( '> .NavPic, > .NavContent, > .toogleShow' ).each( function() {
                        $( this ).css( 'display', 'none' );
                });
                frame.find( '> .toggleHide' ).each( function() {
                        $( this ).css( 'display', 'block' );
                });
                toggle.text( navigationBarShow );
                frame.addClass( 'collapsed' );
        }
}

/**
 * Adds show/hide-button to navigation bars.
 *
 * @param {jQuery} $content
 */
function createNavigationBarToggleButton( $content ) {
        // Iterate over all (new) nav frames
        $content.find( 'div.NavFrame' ).each( function( indexNavigationBar ) {
                var frame = $( this ).attr( 'id', 'NavFrame' + indexNavigationBar );
                // If found a navigation bar
                var navToggle = $( '<span class="NavToggle" id="NavToggle' + indexNavigationBar + '"></span>' );
                frame.find( '> .NavHead' ).each( function() {
                        $( this ).on( 'click', $.proxy( toggleNavigationBar, null, indexNavigationBar ) );
                	return false;
		});
                if ( frame.hasClass( 'collapsed' ) ) {
                        frame.find( '> .NavPic, > .NavContent, > .toggleHide' ).each( function() {
                                $( this ).css( 'display', 'none' );
                        });
                } else {
                        frame.find( '> .toggleShow' ).each( function() {
                                $( this ).css( 'display', 'none' );
                        });
                }

                var showNavigationBarHide = true;
                frame.find( '> .NavPic, > .NavContent' ).each( function() {
                        if ( $( this ).css( 'display' ) === 'none' ) {
                                showNavigationBarHide = false;
                                return false;
                        }
                });

                navToggle.text( showNavigationBarHide? navigationBarHide: navigationBarShow );

                frame.find( '> .NavHead' ).each( function() {
                        $( this ).append( navToggle );
                        return false;
                });
        });
}

        mw.hook( 'wikipage.content' ).add( createNavigationBarToggleButton );

}());

/**
 * Collapsible tables
 *
 * Allows tables to be collapsed, showing only the header. See [[Wikipedia:NavFrame]].
 *
 * @version 2.0.3 (2014-03-14)
 * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-collapsibleTables.js
 * @author [[User:R. Koot]]
 * @author [[User:Krinkle]]
 * @deprecated Since MediaWiki 1.20: Use class="mw-collapsible" instead which
 * is supported in MediaWiki core.
 */

var autoCollapse = 2;
var collapseCaption = wgULS('隐藏', '隱藏');
var expandCaption = wgULS('显示', '顯示');
var tableIndex = 0;

function collapseTable( tableIndex ) {
    var Button = document.getElementById( 'collapseButton' + tableIndex );
    var Table = document.getElementById( 'collapsibleTable' + tableIndex );

    if ( !Table || !Button ) {
        return false;
    }

    var Rows = Table.rows;
    var i;

    if ( Button.firstChild.data === collapseCaption ) {
        for ( i = 1; i < Rows.length; i++ ) {
            Rows[i].style.display = 'none';
        }
        Button.firstChild.data = expandCaption;
    } else {
        for ( i = 1; i < Rows.length; i++ ) {
            Rows[i].style.display = Rows[0].style.display;
        }
        Button.firstChild.data = collapseCaption;
    }
}

function createClickHandler( tableIndex ) {
    return function ( e ) {
        e.preventDefault();
        collapseTable( tableIndex );
    };
}

function createCollapseButtons( $content ) {
    var NavigationBoxes = {};
    var $Tables = $content.find( 'table' );
    var i;

    $Tables.each( function( i, table ) {
        if ( $(table).hasClass( 'collapsible' ) ) {

            /* only add button and increment count if there is a header row to work with */
            var HeaderRow = table.getElementsByTagName( 'tr' )[0];
            if ( !HeaderRow ) {
                return;
            }
            var Header = table.getElementsByTagName( 'th' )[0];
            if ( !Header ) {
                return;
            }

            NavigationBoxes[ tableIndex ] = table;
            table.setAttribute( 'id', 'collapsibleTable' + tableIndex );

            var Button     = document.createElement( 'span' );
            var ButtonLink = document.createElement( 'a' );
            var ButtonText = document.createTextNode( collapseCaption );
            // Styles are declared in [[MediaWiki:Common.css]]
            Button.className = 'collapseButton';

            ButtonLink.style.color = Header.style.color;
            ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex );
            ButtonLink.setAttribute( 'href', '#' );
            $( ButtonLink ).on( 'click', createClickHandler( tableIndex ) );
            ButtonLink.appendChild( ButtonText );

            Button.appendChild( document.createTextNode( '[' ) );
            Button.appendChild( ButtonLink );
            Button.appendChild( document.createTextNode( ']' ) );

            Header.insertBefore( Button, Header.firstChild );
            tableIndex++;
        }
    } );

    for ( i = 0;  i < tableIndex; i++ ) {
        if ( $( NavigationBoxes[i] ).hasClass( 'collapsed' ) ||
            ( tableIndex >= autoCollapse && $( NavigationBoxes[i] ).hasClass( 'autocollapse' ) )
        ) {
            collapseTable( i );
        }
        else if ( $( NavigationBoxes[i] ).hasClass ( 'innercollapse' ) ) {
            var element = NavigationBoxes[i];
            while ((element = element.parentNode)) {
                if ( $( element ).hasClass( 'outercollapse' ) ) {
                    collapseTable ( i );
                    break;
                }
            }
        }
    }
}

mw.hook( 'wikipage.content' ).add( createCollapseButtons );


// 在这行的上面加入其他代码
})});

/* NavBar 结束 */

/* Tabs 开始*/
    function MetaCaixaInit() {
      // S'executa al carregar-se la pàgina, si hi ha metacaixes,
      // s'assignen els esdeveniments als botons
      //alert("MetaCaixaInit");
      var i = 0; // Inicialitzem comptador de caixes
      for (i = 0; i <= 9; i++) {
        var vMc = document.getElementById("mc" + i);
        if (!vMc) break;
        //alert("MetaCaixaInit, trobada Metacaixa mc"+i);
        var j = 1; // Inicialitzem comptador de botons dins de la caixa
        var vPsIni = 0; // Pestanya visible inicial
        for (j = 1; j <= 9; j++) {
          var vBt = document.getElementById("mc" + i + "bt" + j);
          if (!vBt) break;
          //alert("MetaCaixaInit, trobat botó mc"+i+"bt"+j);
          vBt.onclick = MetaCaixaMostraPestanya; // A cada botó assignem l'esdeveniment onclick
          //alert (vBt.className);
          if (vBt.className == "mcBotoSel") vPsIni = j; // Si tenim un botó seleccionat, en guardem l'index
        }
        //alert ("mc="+i+", ps="+j+", psini="+vPsIni );
        if (vPsIni === 0) { // Si no tenim cap botó seleccionat, n'agafem un aleatòriament
          vPsIni = 1 + Math.floor((j - 1) * Math.random());
          //alert ("Activant Pestanya a l'atzar; _mc"+i+"bt"+vPsIni +"_");
          document.getElementById("mc" + i + "ps" + vPsIni).style.display = "block";
          document.getElementById("mc" + i + "ps" + vPsIni).style.visibility = "visible";
          document.getElementById("mc" + i + "bt" + vPsIni).className = "mcBotoSel";
        }
      }
    }

    function MetaCaixaMostraPestanya() {
      // S'executa al clicar una pestanya,
      // aquella es fa visible i les altres s'oculten
      var vMcNom = this.id.substr(0, 3); // A partir del nom del botó, deduïm el nom de la caixa
      var vIndex = this.id.substr(5, 1); // I l'index
      var i = 1;
      for (i = 1; i <= 9; i++) { // busquem totes les pestanyes d'aquella caixa
        //alert(vMcNom+"ps"+i);
        var vPsElem = document.getElementById(vMcNom + "ps" + i);
        if (!vPsElem) break;
        if (vIndex == i) { // Si és la pestanya bona la mostrem i canviem la classe de botó
          vPsElem.style.display = "block";
          vPsElem.style.visibility = "visible";
          document.getElementById(vMcNom + "bt" + i).className = "mcBotoSel";
        } else { // Sinó, l'ocultem i canviem la classe de botó
          vPsElem.style.display = "none";
          vPsElem.style.visibility = "hidden";
          document.getElementById(vMcNom + "bt" + i).className = "mcBoto";
        }
      }
      return false; // evitem la recàrrega de la pàgina
    }
    $(MetaCaixaInit);

/* Tabs 结束 */