// ==UserScript== // @name Google Search restore URLs (undo breadcrumbs) // @namespace https://greasyfork.org/en/users/27283-mutationobserver // @version 2020.01.20v9 // @description Brings back the full URLs in results. // @author MutationObserver // @match https://*.google.com/search?* // @include /^https?://(?:www|encrypted|ipv[46])\.google\.[^/]+/(?:$|[#?]|search|webhp)/ // @grant none // @downloadURL none // ==/UserScript== var results = document.querySelectorAll(".r"); if (navigator.userAgent.includes("Firefox/")) document.body.classList.add("url-restore-userscript-FIREFOX"); if (results) { var linkFontSize; var originalWidths = []; for (i=0; i < results.length; i++) { try { var dropdownArrow = results[i].querySelector('[aria-label="Result Options"]'); if (dropdownArrow) { dropdownArrow.parentElement.parentElement.parentElement.classList.add("url-restore-userscript-dropdownArrow"); } var oldWidth = results[i].offsetWidth; originalWidths.push(oldWidth); var link = results[i].querySelector(".r a").getAttribute("href"); var linkElemsAll = results[i].querySelectorAll("cite"); var linkElem = linkElemsAll[0]; linkElemsAll.forEach(function(e) { e.innerHTML = link; }); linkElem.innerHTML = link; if (!linkFontSize) linkFontSize = window.getComputedStyle(linkElem, null).getPropertyValue('font-size'); linkElem.setAttribute("data-full-link", link); } catch(e){ console.error(e, "Google Search restore URLs - ERROR on result #" + i); continue; } } setTimeout(function() { for (i=0; i < results.length; i++) { var linkElemsAll = results[i].querySelectorAll("cite"); var linkElem = linkElemsAll[0]; var currentWidth = linkElem.offsetWidth; if (currentWidth > (originalWidths[i] * 0.9)) { var link_truncated = linkTruncate(linkElem.innerHTML) linkElemsAll.forEach(function(e) { e.innerHTML = link_truncated; e.setAttribute("data-trunc-link", link_truncated); e.parentElement.setAttribute("onmouseover", 'linkTruncationState(this, "off")'); e.parentElement.setAttribute("onmouseout", 'linkTruncationState(this, "on")'); e.classList.add("url-restore-userscript-truncated"); }); results[i].classList.add("url-restore-userscript-truncated"); } } }, 100); document.querySelector("body").insertAdjacentHTML("afterbegin", ` `); } function linkTruncate(str) { if (str.length > 80) { return str.substr(0, 37) + '...' + str.substr(str.length-40, str.length); } return str; } window.linkTruncationState = function(elem, state) { elems = elem.parentElement.parentElement.querySelectorAll("cite"); switch(state) { case "off": var linkFull = elems[0].getAttribute("data-full-link"); elems.forEach(function(e) { e.innerHTML = linkFull; }); break; case "on": elems.forEach(function(e) { e.innerHTML = e.getAttribute("data-trunc-link"); }); break; } elems[0].parentElement.parentElement.parentElement.classList.toggle("url-restore-userscript-HOVER"); }