User:Jonathan5566/js/sfn.js
注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google Chrome、Firefox、Microsoft Edge及Safari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。
/*
from https://en.wikipedia.org/wiki/User:Ucucha/HarvErrors.js
CC-BY-SA 3.0
*/
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 #
// 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 class=error>哈佛腳註錯誤:" +
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(id) + '"]';
if($content.find(query).length === 0) {
cites[i].innerHTML +=
" <strong class=warning>哈佛參考文獻格式錯誤:文獻" + id + "沒有對應的腳註。</strong>";
}
}
}
});