コンテンツにスキップ

利用者:Early correct/ShowInternalDeadLink.js

お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。

多くの WindowsLinux のブラウザ

  • Ctrl を押しながら F5 を押す。

Mac における Safari

  • Shift を押しながら、更新ボタン をクリックする。

Mac における ChromeFirefox

  • Cmd Shift を押しながら R を押す。

詳細についてはWikipedia:キャッシュを消すをご覧ください。

(function () {
  'use strict';
  function addDeadInternalLink() {
    $('[href]').each(function (index, elem) {
      var href = elem.getAttribute('href');
      if (href.substr(0, 1) === '#') {
        var anchor = href.substr(1);
        if (anchor !== '' && !document.getElementById(anchor)) {
          $(elem).addClass('dead-internal-link');
        }
      }
    });
  }

  function addCSS() {
    mw.util.addCSS(
      '.dead-internal-link:after{ content: " [内部リンク切れ]"; color: red; font-size: x-small; }\n' +
      ''
    );
  }

  function showLinks() {
    var deadInternalLinks = $('.dead-internal-link');
    function deadLinkId(index) {
      return 'dead_internal_link_' + index;
    }
    if(deadInternalLinks.length > 0){
      var linksDiv = $('<div>').addClass('dead-internal-link-links').prependTo($('.mw-indicators').eq(0));
      var $resultSpan = $('<span>').text('内部リンク切れ: ' + deadInternalLinks.length + ':').appendTo(linksDiv);
      deadInternalLinks.each(function (index, elem) {
        var $elem = $(elem);
        var id = $elem.attr('id');
        if (!id) {
          id = deadLinkId(index + 1);
          $elem.attr('id', id);
        }
        $resultSpan.append(' ');
        $('<a>').attr('href', '#' + id).text(index + 1).appendTo($resultSpan);
      });
      if (mw.libs.showInternalDeadLink.addCSS) {
        mw.util.addCSS(
          'div.dead-internal-link-links{ border: black 1px solid; vertical-align: top; display: inline-block; color: red; font-size: x-small; font-weight: bold; }\n' +
          ''
        );
      }
    }
  }
  function main() {
    addDeadInternalLink();
    if (mw.libs.showInternalDeadLink.addCSS) {
      addCSS();
    }
    if (mw.libs.showInternalDeadLink.showLinks) {
      showLinks();
    }
  }
  $(function () {
    if (!('showInternalDeadLink' in mw.libs)) {
      mw.libs.showInternalDeadLink = {
        addCSS: true,
        showLinks: true,
      };
    }

    mw.libs.showInternalDeadLink.deferred = mw.libs.showInternalDeadLink.deferred || $.Deferred();

    mw.loader.using('mediawiki.util').then(function () {
      main();
      mw.libs.showInternalDeadLink.deferred.resolve();
    });
  });
}) ();