There are 2 previous versions of this script.
// ==UserScript==
// @name Locate Keywords in Search Engine Results
// @filename locate-keywords.user.js
// @author Alex Hall
// @homepage http://www.devseo.co.uk/
// @namespace http://www.devseo.co.uk/blog/view/locate-keywords-in-search-engine-results
// @version 1.0.1
// @description Locate specific keywofds easily within the business description of results in a Google, Yahoo!, or Bing Search
// @include http://www.google.com/search*
// @include http://google.com/search*
// @include http://www.google.co.uk/search*
// @include http://google.co.uk/search*
// @include http://uk.search.yahoo.com/search*
// @include http://search.yahoo.com/*
// @include http://bing.com/search*
// @include http://www.bing.com/search*
// ==/UserScript==
//***********************BEGIN CONFIGURATION**********************//
// Set the array of keyphrases you wish to locate
// syntax [['a keyword', 'acolor'], ['keyword number 2', 'acolor'], ['keyword 3', 'acolor']];
// Set the color variable to the background color you wish to use to highlight your keyphrase (defaults to yellow)
var keywords = [
['website', '#F00'],
['development', '#CCC'],
['devseo', '#5090D0']
];
var keywordLen = keywords.length;
//************************END CONFIGURATION***********************//
//*******************DO NOT EDIT PAST THIS LINE*******************//
//****************UNLESS YOU KNOW WHAT YOU'RE DOING***************//
var all_divs = document.getElementsByTagName('div');
var divLen = all_divs.length;
if (location.hostname.indexOf("google.com")!=-1) {
for (i=0; i<divLen; i++) {
if (all_divs[i].className!='s') { continue; }
var descText = all_divs[i].innerHTML;
descText = str_replace('<em>', '', descText);
descText = str_replace('</em>', '', descText);
var textSplit = descText.split('<br>');
descText = textSplit[0];
var j=0;
while(j<keywordLen){
if(strstr(descText.toLowerCase(), keywords[j][0].toLowerCase())){
descText = str_replace(keywords[j][0].toLowerCase(), '<strong style="background-color:'+keywords[j][1]+'">'+keywords[j][0].toLowerCase()+'</strong>', descText.toLowerCase());
}
j++;
}
var newDiv = document.createElement('span');
newDiv.innerHTML = descText;
all_divs[i].replaceChild(newDiv, all_divs[i].childNodes[0]);
}
} else if (location.hostname.indexOf("google.co.uk")!=-1) {
for (i=0; i<divLen; i++) {
if (all_divs[i].className!='s') { continue; }
var descText = all_divs[i].innerHTML;
descText = str_replace('<em>', '', descText);
descText = str_replace('</em>', '', descText);
descText = str_replace('<b>', '', descText);
descText = str_replace('</b>', '', descText);
all_divs[i].innerHTML = descText;
var textSplit = descText.split('<br>');
descText = textSplit[0];
var j=0;
while(j<keywordLen){
if(strstr(descText.toLowerCase(), keywords[j][0].toLowerCase())){
descText = str_replace(keywords[j][0].toLowerCase(), '<strong style="background-color:'+keywords[j][1]+'">'+keywords[j][0].toLowerCase()+'</strong>', descText.toLowerCase());
}
j++;
}
var newDiv = document.createElement('span');
newDiv.innerHTML = descText;
all_divs[i].replaceChild(newDiv, all_divs[i].childNodes[0]);
}
} else if (location.hostname.indexOf("yahoo.com")!=-1) {
for (i=0; i<divLen; i++) {
if (all_divs[i].className!='abstr') { continue; }
var descText = all_divs[i].innerHTML;
descText = str_replace('<b>', '', descText);
descText = str_replace('</b>', '', descText);
var j=0;
while(j<keywordLen){
if(strstr(descText.toLowerCase(), keywords[j][0].toLowerCase())){
descText = str_replace(keywords[j][0].toLowerCase(), '<strong style="background-color:'+keywords[j][1]+'">'+keywords[j][0].toLowerCase()+'</strong>', descText.toLowerCase());
}
j++;
}
all_divs[i].innerHTML = descText;
}
} else if (location.hostname.indexOf("bing.com")!=-1) {
var all_uls=document.getElementsByTagName('ul');
var ulsLen = all_uls.length;
for (i=0; i<ulsLen; i++) {
if (all_uls[i].className!='sb_meta') { continue; }
var pNode = all_uls[i].previousSibling
var descText = pNode.innerHTML;
descText = str_replace('<strong>', '', descText);
descText = str_replace('</strong>', '', descText);
var j=0;
while(j<keywordLen){
if(strstr(descText.toLowerCase(), keywords[j][0].toLowerCase())){
descText = str_replace(keywords[j][0].toLowerCase(), '<strong style="background-color:'+keywords[j][1]+'">'+keywords[j][0].toLowerCase()+'</strong>', descText.toLowerCase());
}
j++;
}
pNode.innerHTML = descText;
}
}
function str_replace (search, replace, subject, count) {
var i = 0, j = 0, temp = '', repl = '', sl = 0, fl = 0,
f = [].concat(search),
r = [].concat(replace),
s = subject,
ra = r instanceof Array, sa = s instanceof Array;
s = [].concat(s);
if (count) {
this.window[count] = 0;
}
for (i=0, sl=s.length; i < sl; i++) {
if (s[i] === '') {
continue;
}
for (j=0, fl=f.length; j < fl; j++) {
temp = s[i]+'';
repl = ra ? (r[j] !== undefined ? r[j] : '') : r[0];
s[i] = (temp).split(f[j]).join(repl);
if (count && s[i] !== temp) {
this.window[count] += (temp.length-s[i].length)/f[j].length;}
}
}
return sa ? s : s[0];
}
function strstr (haystack, needle, bool) {
var pos = 0;
haystack += '';
pos = haystack.indexOf( needle );
if (pos == -1) {
return false;
} else{
if (bool){
return haystack.substr( 0, pos );
} else{
return haystack.slice( pos );
}
}
}