Google Search restore URLs (undo breadcrumbs)

Brings back the full URLs in results.

2019-09-11 يوللانغان نەشرى. ئەڭ يېڭى نەشرىنى كۆرۈش.

// ==UserScript==
// @name         Google Search restore URLs (undo breadcrumbs)
// @namespace    https://greatest.deepsurf.us/en/users/27283-mutationobserver
// @version      2019.09.10v4
// @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
// ==/UserScript==

var results = document.querySelectorAll(".r");

if (results) {
	originalWidths = [];
	for (i=0; i < results.length; i++) {
		try {
			var oldWidth = results[i].offsetWidth;
			originalWidths.push(oldWidth);
			var link = results[i].querySelector(".r a").getAttribute("href");			
			var linkElem = results[i].querySelector("cite");
			linkElem.innerHTML = link;
			linkElem.setAttribute("data-full-link", link);
		}
		catch(e){
			console.log("Google Search restore URLs - ERROR @: " + i + ": " + e.message);
			continue;
		}
	}
	
	setTimeout(function () {
		for (i=0; i < results.length; i++) {
			var linkElem = results[i].querySelector("cite");
			var currentWidth = linkElem.offsetWidth;
			if (currentWidth > originalWidths[i]) {
				linkElem.innerHTML = linkTruncate(linkElem.innerHTML);
			}
		}
	}, 100);
	
	document.querySelector("body").insertAdjacentHTML("afterbegin", `
		<style id="breadcrumb-removal-userscript">
			.r cite {
				white-space: nowrap;
				text-overflow: ellipsis;
			}
			.r > span {
				position: absolute;
				right: 0;
				top: 5px;
			}
		</style>
	`);
}

function linkTruncate(str) {
  if (str.length > 80) {
    return str.substr(0, 37) + '...' + str.substr(str.length-40, str.length);
  }
  return str;
}