Àkíyèsí: Lẹ́yìn ìmúpamọ́, ó ṣe é ṣe kó jẹ́ pé ẹ gbọ́dọ̀ fo cache agbétàkùn yín láti rí àwọn àtúnṣe.

  • Firefox / Safari: Ẹ di Shift mú bí ẹ ṣe ún tẹ Reload, tàbí kí ẹ tẹ Ctrl-F5 tàbí Ctrl-R (⌘-R lórí Mac)
  • Google Chrome: Ẹ tẹ Ctrl-Shift-R (⌘-Shift-R lórí Mac)
  • Internet Explorer: Ẹ di Ctrl mú bí ẹ ṣe ún tẹ Refresh, tàbí kí ẹ tẹ Ctrl-F5
  • Opera: Ẹ lọ sí Menu→Settings (Opera → Preferences lórí Mac) lẹ́yìn náà ẹ lọ sí Privacy & security → Clear browsing data → Cached images and files
(function () {
  var pageName = mw.config.get('wgPageName'),
    userName = mw.config.get('wgUserName'),
    action = mw.config.get('wgAction'),
    articleId = mw.config.get('wgArticleId');

  // Tí ojúewé bá jẹ́ Pàtàkì:Upload lọ sí [[MediaWiki:Upload.js]]
  if (pageName == "Pàtàkì:Upload")  {
    mw.loader.load( '/w/index.php?title=MediaWiki:Upload.js&action=raw&ctype=text/javascript' );
  }

  /*
   * Description: Redirects from /User:UserName/skin.js or .css to the user's actual skin page
   * Maintainer: Cacycle
   */
  if (articleId == 0 && userName) {
    var slash = pageName.indexOf('/');
    var norm = pageName.substr(0, slash) + pageName.substr(slash).toLowerCase();
    var test = 'User:' + userName.replace(/ /g, '_') + '/skin.';
    var ext = null;
    if (norm == test + 'js') ext = 'js';
    else if (norm == test + 'css') ext = 'css';
    if (ext != null) location.href = location.href.replace(/\/skin.(css|js)/i, '/' + skin + '.' + ext);
  }

  /**
   * @source https://www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL
   * @revision 2016-03-26
   */
  mw.loader.using( ['mediawiki.util'], function () {
    var extraCSS = mw.util.getParamValue( 'withCSS' ),
        extraJS = mw.util.getParamValue( 'withJS' );

    if ( extraCSS ) {
      if ( /^MediaWiki:[^&<>=%#]*\.css$/.test( extraCSS ) ) {
        mw.loader.load( '/w/index.php?title=' + extraCSS + '&action=raw&ctype=text/css', 'text/css' );
      } else {
        mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withCSS value' } );
      }
    }

    if ( extraJS ) {
      if ( /^MediaWiki:[^&<>=%#]*\.js$/.test( extraJS ) ) {
        mw.loader.load( '/w/index.php?title=' + extraJS + '&action=raw&ctype=text/javascript' );
      } else {
        mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withJS value' } );
      }
    }
  } );

  /* Import more specific scripts if necessary */
  if (action == "edit" || action == "submit") {
    mw.loader.load( '/w/index.php?title=MediaWiki:Common.js/edit.js&action=raw&ctype=text/javascript' );
  }

  /**
   * WikiMiniAtlas is a popup click and drag world map.
   * See [[meta:WikiMiniAtlas]] for more information.
   * Maintainers: [[w:User:Dschwen]]
   */
  mw.loader.load( '//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript' );

  /* Scripts specific to Internet Explorer */
  if (navigator.appName == "Microsoft Internet Explorer") {
    /** Internet Explorer bug fix
     *
     *  Description: Fixes IE horizontal scrollbar bug
     *  Maintainers: [[User:Tom-]]?
     */

    var oldWidth;
    var docEl = document.documentElement;

    function fixIEScroll()
    {
      if (!oldWidth || docEl.clientWidth > oldWidth)
        doFixIEScroll();
      else
        setTimeout(doFixIEScroll, 1);

      oldWidth = docEl.clientWidth;
    }

    function doFixIEScroll() {
      docEl.style.overflowX = (docEl.scrollWidth - docEl.clientWidth < 4) ? "hidden" : "";
    }

    document.attachEvent("onreadystatechange", fixIEScroll);
    document.attachEvent("onresize", fixIEScroll);

    // In print IE (7?) does not like line-height
    mw.util.addCSS( '@media print { sup, sub, p, .documentDescription { line-height: normal; }}');

    // IE overflow bug
    mw.util.addCSS( 'div.overflowbugx { overflow-x: scroll !important; overflow-y: hidden !important; } div.overflowbugy { overflow-y: scroll !important; overflow-x: hidden !important; }');

    // IE zoomfix
    //Use to fix right floating div/table inside tables.
    mw.util.addCSS( '.iezoomfix div, .iezoomfix table { zoom: 1;}' );
  }

  /* Load fixes for Windows font rendering */
  if ( navigator.platform.indexOf( "Win" ) != -1 ) {
    mw.loader.load( '/w/index.php?title=MediaWiki:Common.css/WinFixes.css&action=raw&ctype=text/css', 'text/css' );
  }

  /* Test if an element has a certain class
   *
   * Description: Uses regular expressions and caching for better performance.
   * Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]]
   */
  var hasClass = (function () {
    var reCache = {};
    return function (element, className) {
      return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
    };
  })();

  /**
   * Interwiki links to featured articles
   *
   *  Description: Highlights interwiki links to featured articles (or
   *               equivalents) by changing the bullet before the interwiki link
   *               into a star.
   *  Maintainers: [[User:R. Koot]]
   */
  function LinkFA() {
    if ( document.getElementById( "p-lang" ) ) {
      var InterwikiLinks = document.getElementById( "p-lang" ).getElementsByTagName( "li" );

      for ( var i = 0; i < InterwikiLinks.length; i++ ) {
        if ( document.getElementById( InterwikiLinks[i].className + "-fa" ) ) {
          InterwikiLinks[i].className += " FA"
          InterwikiLinks[i].title = "Àyọkà ojúabuda nìyí ní èdè mìràn.";
        } else if ( document.getElementById( InterwikiLinks[i].className + "-ga" ) ) {
          InterwikiLinks[i].className += " GA"
          InterwikiLinks[i].title = "Àyọkà dáradára nìyí ní èdè míràn.";
         }
      }
    }
  }

  $( LinkFA );

  /**
   * Collapsible tables
   *
   * Description: Allows tables to be collapsed, showing only the header. See
   *              [[Wikipedia:NavFrame]].
   * Maintainers: [[User:R. Koot]]
   */
  var autoCollapse = 2;
  var collapseCaption = 'bòmọ́lẹ̀';
  var expandCaption = 'fihàn';

  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;
    }
  };

  function createCollapseButtons() {
    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;
          }
        }
      }
    }
  }

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

  /**
   * Dynamic Navigation Bars (experimental)
   *
   * Description: See [[Wikipedia:NavFrame]].
   * Maintainers: UNMAINTAINED
   */

  /* set up the words in your language */
  var NavigationBarHide = '[' + collapseCaption + ']';
  var NavigationBarShow = '[' + expandCaption + ']';

  /**
   * Shows and hides content and picture (if available) of navigation bars
   * Parameters:
   *     indexNavigationBar: the index of navigation bar to be toggled
   **/
  window.toggleNavigationBar = function ( indexNavigationBar, event ) {
      var NavToggle = document.getElementById( 'NavToggle' + indexNavigationBar );
      var NavFrame = document.getElementById( 'NavFrame' + indexNavigationBar );
      var NavChild;

      if ( !NavFrame || !NavToggle ) {
          return false;
      }

      /* if shown now */
      if ( NavToggle.firstChild.data === NavigationBarHide ) {
          for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
              if ( $( NavChild ).hasClass( 'NavContent' ) || $( NavChild ).hasClass( 'NavPic' ) ) {
                  NavChild.style.display = 'none';
              }
          }
      NavToggle.firstChild.data = NavigationBarShow;

      /* if hidden now */
      } else if ( NavToggle.firstChild.data === NavigationBarShow ) {
          for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
              if ( $( NavChild ).hasClass( 'NavContent' ) || $( NavChild ).hasClass( 'NavPic' ) ) {
                  NavChild.style.display = 'block';
              }
          }
          NavToggle.firstChild.data = NavigationBarHide;
      }

      event.preventDefault();
  };

  /* adds show/hide-button to navigation bars */
  function createNavigationBarToggleButton() {
      var indexNavigationBar = 0;
      var NavFrame;
      var NavChild;
      /* iterate over all < div >-elements */
      var divs = document.getElementsByTagName( 'div' );
      for ( var i = 0; (NavFrame = divs[i]); i++ ) {
          /* if found a navigation bar */
          if ( $( NavFrame ).hasClass( 'NavFrame' ) ) {

              indexNavigationBar++;
              var NavToggle = document.createElement( 'a' );
              NavToggle.className = 'NavToggle';
              NavToggle.setAttribute( 'id', 'NavToggle' + indexNavigationBar );
              NavToggle.setAttribute( 'href', '#' );
              $( NavToggle ).on( 'click', $.proxy( window.toggleNavigationBar, window, indexNavigationBar ) );

              var isCollapsed = $( NavFrame ).hasClass( 'collapsed' );
              /**
               * Check if any children are already hidden.  This loop is here for backwards compatibility:
               * the old way of making NavFrames start out collapsed was to manually add style="display:none"
               * to all the NavPic/NavContent elements.  Since this was bad for accessibility (no way to make
               * the content visible without JavaScript support), the new recommended way is to add the class
               * "collapsed" to the NavFrame itself, just like with collapsible tables.
               */
              for ( NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling ) {
                  if ( $( NavChild ).hasClass( 'NavPic' ) || $( NavChild ).hasClass( 'NavContent' ) ) {
                      if ( NavChild.style.display === 'none' ) {
                          isCollapsed = true;
                      }
                  }
              }
              if ( isCollapsed ) {
                  for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
                      if ( $( NavChild ).hasClass( 'NavPic' ) || $( NavChild ).hasClass( 'NavContent' ) ) {
                          NavChild.style.display = 'none';
                      }
                  }
              }
              var NavToggleText = document.createTextNode( isCollapsed ? NavigationBarShow : NavigationBarHide );
              NavToggle.appendChild( NavToggleText );

              /* Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked) */
              for( var j = 0; j < NavFrame.childNodes.length; j++ ) {
                  if ( $( NavFrame.childNodes[j] ).hasClass( 'NavHead' ) ) {
                      NavToggle.style.color = NavFrame.childNodes[j].style.color;
                      NavFrame.childNodes[j].appendChild( NavToggle );
                  }
              }
              NavFrame.setAttribute( 'id', 'NavFrame' + indexNavigationBar );
          }
      }
  }

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

  /**
   * Main Page fixes
   *
   * Description: Adds an additional link to the complete list of languages available.
   * Maintainers: [[User:AzaToth]], [[User:R. Koot]], [[User:Alex Smotrov]]
   */
  if (mw.config.get('wgIsMainPage')) {
    mw.loader.using(['mediawiki.util']).then(function () {
      $(function () {
        mw.util.addPortletLink('p-lang', '//meta.wikimedia.org/wiki/List_of_Wikipedias',
         'Àkójọ kíkúnrẹ́rẹ́', 'interwiki-completelist', 'Gbogbo àkójọ àwọn Wikipedia');
      });
    });
  }

}());