MediaWiki:Common.js

2020年9月29日 (火) 23:42時点における𩸽 (トーク | 投稿記録)による版

注意: 保存後、変更を確認するにはブラウザーのキャッシュを消去する必要がある場合があります。

  • Firefox / Safari: Shift を押しながら 再読み込み をクリックするか、Ctrl-F5 または Ctrl-R を押してください (Mac では ⌘-R)
  • Google Chrome: Ctrl-Shift-R を押してください (Mac では ⌘-Shift-R)
  • Internet Explore/Edger: Ctrl を押しながら 最新の情報に更新 をクリックするか、Ctrl-F5 を押してください
  • Opera: Ctrl-F5を押してください
/*
 * 拡張型折りたたみ要素(EnhancedCollapsibleElements)
 * 説明書:https://ja.wikipedia.org/wiki/Help:拡張型折りたたみ可能要素
 */
mw.loader.load('/vikipedia/index.php?title=MediaWiki:EnhancedCollapsibleElements.js&action=raw&ctype=text/javascript');

/**
 * Collapsible tables *********************************************************
 *
 * Description: Allows tables to be collapsed, showing only the header. See
 *              [[Vikipedia:NavFrame]].
 * Maintainers: [[User:SupernovaT]]
 */
 
window.autoCollapse = 2;
window.collapseCaption = "隠す";
window.expandCaption = "表示";
 
window.collapseTable = function ( 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;
    }
};
 
window.createCollapseButtons = function() {
    var tableIndex = 0;
    var NavigationBoxes = {};
    var Tables = document.getElementsByTagName( 'table' );
    var i;
 
    function handleButtonLink( index, e ) {
        window.collapseTable( index );
        e.preventDefault();
    }
 
    for ( i = 0; i < Tables.length; i++ ) {
        if ( $( Tables[i] ).hasClass( 'collapsible' ) ) {

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

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

            var Button     = document.createElement( 'span' );
            var ButtonLink = document.createElement( 'a' );
            var ButtonText = document.createTextNode( collapseCaption );

            Button.className = 'collapseButton';  /* Styles are declared in Common.css */

            ButtonLink.style.color = Header.style.color;
            ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex );
            ButtonLink.setAttribute( 'href', '#' );
            $( ButtonLink ).on( 'click', $.proxy( handleButtonLink, ButtonLink, 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' ) ) ) {
            window.collapseTable( i );
        } 
        else if ( $( NavigationBoxes[i] ).hasClass ( 'innercollapse' ) ) {
            var element = NavigationBoxes[i];
            while ((element = element.parentNode)) {
                if ( $( element ).hasClass( 'outercollapse' ) ) {
                    window.collapseTable ( i );
                    break;
                }
            }
        }
    }
}

$(document).ready( createCollapseButtons );


// ==UserScript==
// -*- mode:JScript; Encoding:utf8n -*-
// @name           Wikipedia.citePopup
// @namespace      http://d.hatena.ne.jp/p-arai/
// @description    Add pop-up on reference to footnote
// @include        http://ja.wikipedia.org/wiki/*
// @grant          none
// 
// @author         p-arai, yuuAn
// @version        2012.11.10
// ==/UserScript==

(function () {

  // retrive array of cites
  var cites = new Array();
  var lis = document.getElementsByTagName("li");
  for (var i=0; i < lis.length; i++){
    var li = lis[i];
    if (li.id.match(/^cite_note(?:-[\w\.]+){0,}-(\d+)$/)){
      var index = RegExp.$1;
      cites[index] = li;
    }
  }

  // retrive and modify reference element
  var hrefs = document.getElementsByTagName("a");
  for (var i=0; i < hrefs.length; i++){
    var a = hrefs[i];
    if (a.href.match(/#cite_note(?:-[\w\.]+){0,}-(\d+)$/)){
      var index = RegExp.$1;
      if (typeof a.textContent != "undefined") {
        a.title = cites[index].textContent.replace(/^[^]\s*/, "");
      } else {
        a.title = cites[index].innerText.replace(/^[^]\s*/, "");
      }
    }
  }

})();


// == UserHeat ==
(function(add, cla){window['UserHeatTag']=cla;window[cla]=window[cla]||function(){(window[cla].q=window[cla].q||[]).push(arguments)},window[cla].l=1*new Date();var ul=document.createElement('script');var tag = document.getElementsByTagName('script')[0];ul.async=1;ul.src=add;tag.parentNode.insertBefore(ul,tag);})('//uh.nakanohito.jp/uhj2/uh.js', '_uhtracker');_uhtracker({id:'uhxScATTSI'});