User:A10brown/monobook.js

/* put custom javascripts here */

// several functions to highlight any words in ?abh= query var

// also requires use of User:A10brown/monobook.css

function highlightOnLoad {

// Get search string if (/abh\=/.test(window.location.search)) {

var searchString = getSearchString; // Starting node, parent to all nodes you want to search var textContainerNode = document.getElementById("content");

// Split search terms on "|" and iterate over resulting array var searchTerms = searchString.split("|"); for (var i in searchTerms) 	{ if ( 1 < searchTerms[i].length ){ // don't highlight e.g. middle initials

// The regex is the secret, it prevents text within tag declarations to be affected var regex = new RegExp(">([^<]*)?("+searchTerms[i]+")([^>]*)?<","ig"); highlightTextNodes(textContainerNode, regex, i); }		}	} } // Pull the search string out of the URL function getSearchString { // Return sanitized search string if it exists var rawSearchString = window.location.search.replace(/[a-zA-Z0-9\?\&\=\%\#]+abh\=(\w+)(\&.*)?/,"$1"); // Replace "+" with "|" for regex // Also replace "%20" if your cms/blog uses this instead (credit to erlando for adding this) return rawSearchString.replace(/\%20|\+/g,"\|"); }

function highlightTextNodes(element, regex, termid) { var tempinnerHTML = element.innerHTML; // Do regex replace // Inject span with class of "highlighted termX" for google style highlighting element.innerHTML = tempinnerHTML.replace(regex,">$1$2 $3<"); }

// Call this onload //document.onload = highlightOnLoad; $(function{return highlightOnLoad;}); // use wikibits onloadhook handler