Customized version
|
|
Hi, This is a customized version of this script. Instead of adding link at the top of the image, it convert the image description into direct link to the image and the hostname into link to the page containing the image. Tested in Opera.
// ==UserScript==
// @name Google Image Search Direct Links
// @namespace http://userscripts.org/users/79816
// @description Shows a little "direct image link" above Google image search results
// @version 1.0.6
// @copyright 2009, ulrichb
// @include http://images.google.*/*
// ==/UserScript==
(function() { // function wrapper for Opera
function selectNodes(contextNode, xpathExpression) {
var nodes = document.evaluate(xpathExpression, contextNode, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
var nodeArray = new Array(nodes.snapshotLength);
for (var i = 0; i < nodeArray.length; i++) {
nodeArray[i] = nodes.snapshotItem(i);
}
return nodeArray;
}
createDirectLinks();
window.addEventListener("resize", createDirectLinks, true);
function createDirectLinks() {
var directLinkHtmlClass = "directLink";
var dataImageElements = selectNodes(document, "//td[starts-with(@id, 'tDataImage')]");
var dataTextElements = selectNodes(document, "//td[starts-with(@id, 'tDataText')]");
for (var i = 0; i < dataImageElements.length; i++) {
var dataImageElement = dataImageElements[i];
var dataImageDirectLinkElements = selectNodes(dataImageElement, "./div[@class='" + directLinkHtmlClass + "']");
var dataImageLinkElements = selectNodes(dataImageElement, "./a");
if ((dataImageLinkElements.length > 0) && (dataImageDirectLinkElements.length == 0)) {
var dataImageLinkElement = dataImageLinkElements[0];
if (dataImageLinkElement.hasAttribute("href")) {
var linkAddress = dataImageLinkElement.getAttribute("href");
var imageUrlMatchResult = linkAddress.match(/imgurl=(.*)&imgrefurl=([^&]*)(&|$)/);
if ((imageUrlMatchResult != null) && (imageUrlMatchResult[1] != null)) {
var imageUrl = decodeURIComponent(imageUrlMatchResult[1]);
var imageRefUrl = decodeURIComponent(imageUrlMatchResult[2]);
var imageTextFontElement = selectNodes(dataTextElements[i], "./font")[0];
var texts = imageTextFontElement.innerHTML.split('<BR>');
texts[0] = '<a href="'+imageUrl+'">'+texts[0]+'</a>';
texts[2] = '<a href="'+imageRefUrl+'">'+texts[2]+'</a>';
imageTextFontElement.innerHTML = texts.join('<BR>');
}
}
}
}
} //function createDirectLinks()
})(); // function wrapper for Opera
|