NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Google View Image
// @namespace http://GoogleViewImage.com/
// @version 0.1
// @description Bring back Google View Image!
// @author laidbackTempo
// @match https://**/*
// @match http://**/*
// @license MIT
// @grant none
// ==/UserScript==
(function() {
'use strict';
console.log("Hello");
function toI18n(str) {
return str.replace(/__MSG_(\w+)__/g, function (match, v1) {
return v1 ? chrome.i18n.getMessage(v1) : '';
});
}
console.log("Hello 2");
function localiseObject(obj, tag) {
obj.innerHTML = tag;
return;
//var msg = toI18n(tag);
//if (msg != tag) obj.innerHTML = msg;
}
function addLinks(node) {
console.log("Adding link");
if (node.nodeType === Node.ELEMENT_NODE) {
console.log("Adding link in");
if ((node.classList.contains('irc_ris')) || (node.classList.contains('irc_mi') || (node.classList.contains('irc_tas')))) {
console.log("Adding link OK OK ");
var object = node.closest('.irc_c');
// Retrive image links, and image url
var imageLinks = object.querySelector('._FKw.irc_but_r > tbody > tr');
var imageText = object.querySelector('._cjj > .irc_it > .irc_hd > ._r3');
// Retrive the image URL
var imageURL;
var thumbnail = document.querySelector('img[name="' + object.dataset.itemId + '"]');
if (thumbnail) {
var meta = thumbnail.closest('.rg_bx').querySelector('.rg_meta');
var metadata = JSON.parse(meta.innerHTML);
imageURL = metadata.ou;
} else {
imageURL = document.getElementsByClassName('irc_mi')[0].src;
}
// Remove previously generated view image buttons
var oldViewImage = imageLinks.querySelector('.ext_addon');
if (oldViewImage) {
imageLinks.removeChild(oldViewImage);
}
// remove previously generated search by image links
var oldSearchByImage = imageText.querySelector('.ext_addon');
if (oldSearchByImage) {
imageText.removeChild(oldSearchByImage);
}
// Create Search by image button
var searchByImage = document.createElement('a');
searchByImage.setAttribute('href', '/searchbyimage?&image_url=' + imageURL);
searchByImage.setAttribute('class', 'ext_addon');
searchByImage.setAttribute('style', 'margin-left:4pt;');
// Insert text into Search by image button
var searchByImageText = document.createElement('span');
localiseObject(searchByImageText, '<span>View Image</span>');
searchByImage.appendChild(searchByImageText);
// Append Search by image button
imageText.appendChild(searchByImage);
// Create View image button
var viewImage = document.createElement('td');
viewImage.setAttribute('class', 'ext_addon');
// Add globe to View image button
var viewImageLink = document.createElement('a');
var globeIcon = document.querySelector('._RKw._wtf._Ptf').cloneNode(true);
viewImageLink.appendChild(globeIcon);
// add text to view image button
var viewImageText = document.querySelector('._WKw').cloneNode(true);
localiseObject(viewImageText, 'View Image');
viewImageLink.appendChild(viewImageText);
// Add View image button URL
viewImageLink.setAttribute('href', imageURL);
viewImageLink.setAttribute('target', '_blank');
viewImage.appendChild(viewImageLink);
// Add View image button to Image Links
var save = imageLinks.childNodes[1];
imageLinks.insertBefore(viewImage, save);
console.log("Adding DONE!!!");
}
}
}
var observer = new MutationObserver(function (mutations) {
mutations.forEach((mutation) => {
if (mutation.addedNodes && mutation.addedNodes.length > 0) {
for (var i = 0; i < mutation.addedNodes.length; i++) {
var newNode = mutation.addedNodes[i];
addLinks(newNode);
}
}
});
});
observer.observe(document.body, {
childList: true,
subtree: true
});
addLinks(document.body);
})();