Misplaced Pages

User:Ucucha/HarvErrors.js: Difference between revisions

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.
< User:Ucucha Browse history interactively← Previous editContent deleted Content added
Revision as of 21:44, 19 December 2017 view sourceTheDJ (talk | contribs)Extended confirmed users, Template editors46,216 editsm and another place that requires escaping← Previous edit Latest revision as of 17:08, 20 March 2021 view source Jon (WMF) (talk | contribs)Extended confirmed users1,203 edits maintenance: more info TypeError: elem.parentNode is null 
Line 11: Line 11:
// IDs can contain characters like . that have meaning in selectors // IDs can contain characters like . that have meaning in selectors
// use $.escapeSelector to make sure they are escaped // use $.escapeSelector to make sure they are escaped
if ( $content.find( '#' + $.escapeSelector(href) ).length < 1) if ( $content.find( '#' + $.escapeSelector(href) ).length < 1 && elem && elem.parentNode)
elem.parentNode.innerHTML += elem.parentNode.innerHTML +=
" <strong class=error>Harv error: link from " + " <strong class=error>Harv error: link from " +

Latest revision as of 17:08, 20 March 2021

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' );

    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>Harv error: link from " +
                href +
                " doesn't point to any citation.</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.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.parentNode.parentNode.getAttribute('id');
            if(parentid && parentid.indexOf('cite_note') === 0)
                continue;
            // check for links to this citation
            var query = 'a';
            if($content.find(query).length === 0) {
                cites.innerHTML +=
                    " <strong class=warning>Harv warning: There is no link pointing to this citation. The anchor is named " + id + ".</strong>";
            }
        }
    }
});
User:Ucucha/HarvErrors.js: Difference between revisions Add topic