利用者:ネイ/HarvErrors.js

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

多くの WindowsLinux のブラウザ

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

Mac における Safari

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

Mac における ChromeFirefox

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

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

// From [[:en:User:Ucucha/HarvErrors.js]] oldid=1013243348
if(window.checkLinksToCitations === undefined)
	window.checkLinksToCitations = true;

mw.hook( 'wikipage.content' ).add( function( $content ) {
	// first check: do links in Harvard citations point to a valid citation?
	var href,
		links = $content.find( 'a[href^="#CITEREF"]' );

	links.each( function (i, elem) {
		href = elem.getAttribute( 'href' ).substring(1); //skip the #
		href = decodeURIComponent(href);
		// IDs can contain characters like . that have meaning in selectors
		// use $.escapeSelector to make sure they are escaped
		if ( $content.find( '#' + $.escapeSelector(href) ).length < 1 && elem && elem.parentNode)
			elem.parentNode.innerHTML +=
				' <strong style="font-size: larger; color: #d33;" class="harverror-error">HarvErrorsのエラー:' +
				href +
				"のリンク先の出典が指定されていません。</strong>";
	} );

	// second check: do CITEREF IDs have Harvard citations pointing to them?
	if(window.checkLinksToCitations) {
		var cites = $content.find('.citation');
		for(var i=0; i < cites.length; i++) {
			var id = cites[i].getAttribute('id');
			// we only need to check citations with a
			if(!id || id.indexOf('CITEREF') !== 0)
				continue;
			// don't do cites that are inside a ref
			var parentid = cites[i].parentNode.parentNode.getAttribute('id');
			if(parentid && parentid.indexOf('cite_note') === 0)
				continue;
			// check for links to this citation
			var query = 'a[href|="#' + $.escapeSelector(encodeURI(id)) + '"], a[href|="#' + $.escapeSelector(id) + '"]';
			if($content.find(query).length === 0) {
				cites[i].innerHTML +=
					' <strong style="font-size: larger; color: #ac6600;" class="harverror-warning">HarvErrorsの警告:この出典にリンクする脚注がありません。アンカーの名前は' + id + "です。</strong>";
			}
		}
	}
});