There are 3 previous versions of this script.
// ==UserScript==
// @name Result Numbers
// @description Adds a number in turn to web search results of Google.
// @version 1.0.8
// @author Shinya
// @namespace http://www.code-404.net/
// @homepage http://www.code-404.net/article/2007/08/07/result-number
// @include http://www.google.*/search*
// @Note
// ==/UserScript==
(function(){
var number = 1;
var start = document.location.href.match(/start=(\d+)/);
if(start) number = ++start[1];
var results = $X("//table[@class='ts']//table[@class='ts']//a[@class='l'] | //h3[@class='r']//a[@class='l']");
number = addNumberResults(results, number);
addFilter(function(elm){
for(var i = 0, l = elm.length; i < l; i++){
var results = $X(".//table[@class='ts']//table[@class='ts']//a[@class='l'] | .//h3[@class='r']//a[@class='l']", elm[i]);
if(results == null) continue;
number = addNumberResults(results, number);
break;
}
});
function addNumberResults(results, count){
for(var i = 0; result = results[i]; i++, count++){
var prefix = document.createTextNode(count + ". ");
result.parentNode.insertBefore(prefix, result.parentNode.firstChild);
}
return count;
}
/*
* $X function from nulog
* http://lowreal.net/logs/2006/03/16/1
*
* Thanks, cho45.
*/
function $X (exp, context) {
if (!context) context = document;
var resolver = function(prefix){
var o = document.createNSResolver(context)(prefix);
return o ? o : (document.contentType == "text/html") ? "" : "http://www.w3.org/1999/xhtml";
}
var exp = document.createExpression(exp, resolver);
var result = exp.evaluate(context, XPathResult.ANY_TYPE, null);
switch(result.resultType){
case XPathResult.STRING_TYPE : return result.stringValue;
case XPathResult.NUMBER_TYPE : return result.numberValue;
case XPathResult.BOOLEAN_TYPE: return result.booleanValue;
case XPathResult.UNORDERED_NODE_ITERATOR_TYPE: {
result = exp.evaluate(context, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
var ret = [];
for(var i = 0, len = result.snapshotLength; i < len ; i++){
ret.push(result.snapshotItem(i));
}
return ret;
}
}
return null;
}
// For Autopagerize 0.0.12
function addFilter(filter, i) {
i = i || 4;
if(window.AutoPagerize && window.AutoPagerize.addFilter){
window.AutoPagerize.addFilter(filter);
}
else if(i > 1){
setTimeout(arguments.callee, 1000, filter, i - 1);
}
}
})();
