// ==UserScript== // @name View Button // @namespace view-button // @version 0.2.1 // @description Returns back "View Image" button for google images // @author 0xdv // @include /^https://(.*).google.([a-z\.]*)/(imgres|search)(.*)/ // @homepageURL https://github.com/0xdv/make-view-button-back-again // @downloadURL https://raw.githubusercontent.com/0xdv/make-view-button-back-again/master/view-button.user.js // @updateURL https://raw.githubusercontent.com/0xdv/make-view-button-back-again/master/view-button.user.js // @grant none // @license MIT // ==/UserScript== (function () { "use strict"; let buttonWrapperClass = "view_button_wrapper"; let escapeHTMLPolicy = trustedTypes.createPolicy("forceInner", { createHTML: (to_escape) => to_escape, }); let imageObserver = new MutationObserver(function (mutations) { mutations.forEach(function (mutation) { // console.log(mutation) if (mutation.target.src !== "") { if (mutation.target.classList.contains("n3VNCb")) { let container = mutation.target.closest(".OUZ5W"); let btn = document.createElement("a"); btn.className += buttonWrapperClass; btn.className += " h04bR"; btn.target = "_blank"; btn.href = mutation.target.src; btn.rel = "noreferrer"; btn.title = "View Image"; btn.innerHTML = escapeHTMLPolicy.createHTML( '' ); let div = document.createElement("div"); div.className += " Jx5U7c SIwKhe"; div.appendChild(btn); let menu = container.querySelector(".fDqwl"); let existBtn = menu.querySelector("." + buttonWrapperClass); if (existBtn) { existBtn.parentNode.removeChild(existBtn); } menu.insertBefore(div, menu.childNodes[0]); } } }); }).observe(document.body, { attributes: true, subtree: true, attributeFilter: ["src"], }); })();