User:DavidBrooks/HarvErrors.js

// Tweaked copy of User:Ucucha/HarvErrors.js // But see User:Trappist the monk/HarvErrors.js for selective error suppression 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.parentNode.innerHTML +=                " Harv error: link from " +                href +                " doesn't point to any citation. ";    } );

// second check: used to be: do CITEREF IDs have Harvard citations pointing to them? // David's tweak: even if they don't, surface 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... something? if(!id || id.indexOf('CITEREF') !== 0) continue; // Don't warn about links to this citation: I'm not so exercised by those cites[i].innerHTML += " This citation's anchor is named " + id + ". "; }   } });