Google Image Search Direct Links

By ulrich Last update May 9, 2010 — Installed 14,241 times.

Customized version

in
Subscribe to Customized version 1 post, 1 voice

char101 User

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
Cross
Presentational HTML allowed.
Use <code> for inline code and <pre> for code blocks. Use &lt; and &gt; for literal < and >.
We help break paragraphs and link your links.
or cancel