User:Gary/highlight nearby links.js

/*	HIGHLIGHT NEARBY LINKS Description: If two links are next to each other so it's hard to tell if they are one link or two separate ones (such as New York City), both links will be underlined so that it is clear that they are separate.

if (typeof(unsafeWindow) != 'undefined') {	mw = unsafeWindow.mw; }

$(highlightNearbyLinks);

function highlightNearbyLinks {	if (!(mw.config.get('wgAction') == 'view' || (mw.config.get('wgPageName') == 'Wikipedia:Sandbox' && mw.config.get('wgAction') == 'submit'))) return false; mw.util.addCSS('a.highlight-nearby { text-decoration: underline; }'); mw.util.addCSS('a.highlight-nearby:hover { text-decoration: none; }'); var bodyId = mw.config.get('wgPageName') == 'Wikipedia:Sandbox' && mw.config.get('wgAction') == 'submit' ? 'wikiPreview' : 'bodyContent'; var body = $('#' + bodyId); if (!body.length) return false; var links = $('a', body); // loop through links in page body links.each(function	{		var link = $(this);		var next = link.next;		// NOT: next node is a link, preceded by spaces		// NOT: next node is a link and is also the next sibling		if (!(next.length && next[0].nodeName == 'A' && ((link[0].nextSibling.nodeType == 3 && link[0].nextSibling.nodeValue.replace(/ /g, ) == ) || link[0].nextSibling == next[0]))) return true;		// NOT: current and next links are not images		if (!(!link.hasClass('image') && !next.hasClass('image'))) return true;		// this is a refname		if ((link.children.length && link.children.first[0].nodeName == 'SUP') || (next.children.length && next.children.first[0].nodeName == 'SUP')) return true;		link.addClass('highlight-nearby');		next.addClass('highlight-nearby');	}); }