利用者:MawaruNeko/ShowInternalDeadLink.js
表示
お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。
多くの Windows や Linux のブラウザ
- Ctrl を押しながら F5 を押す。
Mac における Safari
Mac における Chrome や Firefox
- ⌘ Cmd と ⇧ Shift を押しながら R を押す。
詳細についてはWikipedia:キャッシュを消すをご覧ください。
/*
* ページ内リンク切れを表示するカスタムJS
* Custom JS to show internal dead links in a page
*
* 説明:
* カスタムJSとして導入して下さい。
*
* Description:
* Use this file as custom JS.
*
* Global variables:
* 以下のグローバル変数を、このスクリプトを読み込むより前に設定することで、
* このスクリプトの動作を制御できます。
* (default)
* mw.libs.showInternalDeadLink = {
* addCSS: true,
* showLinks: true,
* deferred: $.Deferred(),
* };
* mw.libs.showInternalDeadLink.addCSS:
* trueの時、デフォルトのスタイルを追加します。
* falseの時、スタイルを追加しません。自分でCSSを追加してスタイルを設定してください。
* mw.libs.showInternalDeadLink.showLinks:
* trueの時、リンク切れ部分へのリンクをページ右上に表示します。
* falseの時、リンク切れ部分へのリンクを表示しません。
* mw.libs.showInternalDeadLink.deferred:
* 処理完了時に成功するdeferredオブジェクトを設定します。
*
* CSS:
* .dead-internal-link
* リンク切れのリンク
* div.dead-internal-link-links
* リンク切れ部分へのリンクを表示する領域
*
* このファイルはパブリックドメインとします。
* This file is public domain.
*/
(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();
});
});
}) ();