MediaWiki:Gadget-userhighlight.js

//This script (w:User:ais523/highlightmyname.js) highlights all instances of the //logged-in user's username on pages by giving them a grey background. It only //checks bodyContent, not titles or sidebars. // function highlightmyname(n,p) //node, parent node { while(n!==null) {   if(n.nodeType==3) //text node {     if(n.data.toLowerCase.indexOf(mw.config.get('wgUserName').toLowerCase)!=-1) {       var ix=n.data.toLowerCase.indexOf(mw.config.get('wgUserName').toLowerCase); var t1=ix?document.createTextNode(n.data.substr(0,ix)):null; var t2=document.createTextNode(n.data.substr(ix,mw.config.get('wgUserName').length)); var t3=ix+mw.config.get('wgUserName').length==n.data.length?null: document.createTextNode(n.data.substr(ix+mw.config.get('wgUserName').length)); var s1=document.createElement("SPAN"); s1.className = 'gadget-userhighlight'; s1.appendChild(t2); var s2=document.createElement("SPAN"); if(t1!==null) s2.appendChild(t1); s2.appendChild(s1); if(t3!==null) s2.appendChild(t3); p.replaceChild(s2,n); if(t3!==null) highlightmyname(t3,s2); //find remaining occurences in the new nodes n=s2.nextSibling; }     else n=n.nextSibling; }   else {     if(n.firstChild!==null) highlightmyname(n.firstChild,n); n=n.nextSibling; } } } $(function {  if(location.href.indexOf("?ais523")==-1&&location.href.indexOf("&ais523")==-1&& location.href.indexOf("?action=edit")==-1&&location.href.indexOf("?action=submit")==-1&& location.href.indexOf("&action=edit")==-1&&location.href.indexOf("&action=submit")==-1&& location.href.indexOf("&action=raw")==-1&&mw.config.get('wgPageName')!="Special:Preferences")   highlightmyname(document.getElementById('bodyContent').firstChild, document.getElementById('bodyContent')); });