Google Cache Redirect Remover

Removes the Google redirect in cached links

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey, Greasemonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Userscripts.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een gebruikersscriptbeheerder nodig.

(Ik heb al een user script manager, laat me het downloaden!)

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

(Ik heb al een beheerder - laat me doorgaan met de installatie!)

// Google Cache Redirect Remover
// GNU General Public License

// ==UserScript==
// @name           Google Cache Redirect Remover
// @namespace      http://qixinglu.com
// @description    Removes the Google redirect in cached links
// @include        http://www.google.*/search?*
// @include        https://encrypted.google.*/search?*
// @version 0.0.1.20140517140357
// ==/UserScript==

var USE_HTTPS = true;
var REMOVE_SEARCH_LINKS = false;
var APPEND_SEARCH_LINKS = false;

var snapshotLinksNode = document.getElementsByClassName("gl");
for (var i = 0; i < snapshotLinksNode.length; i++) {
    try {
        var linkNode = snapshotLinksNode[i].childNodes[0];
        linkNode.removeAttribute("onmousedown");
        if (USE_HTTPS) {
            linkNode.href = linkNode.href.replace("http://", "https://");
        }
    } catch (e) {
        continue;
    }
}

var previewLinksNode = document.getElementsByClassName("f");
for (var i = 0; i < previewLinksNode.length; i++) {
    try {
        var linkNode = previewLinksNode[i].nextElementSibling;
        linkNode.removeAttribute("onmousedown");
        if (USE_HTTPS) {
            linkNode.href = linkNode.href.replace("http://", "https://");
        }
    } catch (e) {
        continue;
    }
}

if (REMOVE_SEARCH_LINKS) {
    var searchLinksNode = document.getElementsByClassName("l");
    for (var i = 0; i < searchLinksNode.length; i++) {
        try {
            var linkNode = searchLinksNode[i];
            linkNode.removeAttribute("onmousedown");
        } catch (e) {
            continue;
        }
    }
}

if (APPEND_SEARCH_LINKS) {
    var searchLinksNode = document.getElementsByClassName("l");
    for (var i = 0; i < searchLinksNode.length; i++) {
        try {
            var linkNode = searchLinksNode[i];
            var newLinkNode = document.createElement("a");
            newLinkNode.href = linkNode.href;
            newLinkNode.textContent = "SourceLink";
            if (document.location.href.indexOf('https') == 0) {
                var additionLinkNodes = linkNode.parentNode.parentNode.getElementsByClassName("gl");
            } else {
                var additionLinkNodes = linkNode.parentNode.parentNode.parentNode.getElementsByClassName("gl");
            }
            for (var j = 0; j < additionLinkNodes.length; j++) {
                try {
                    var snapshotLinkNode = additionLinkNodes[j].firstChild;
                    if (snapshotLinkNode.href.indexOf("webcache.googleusercontent.com") != -1) {
                        var additionLinkNode = snapshotLinkNode.parentNode;
                        additionLinkNode.appendChild(document.createTextNode(" - "));
                        additionLinkNode.appendChild(newLinkNode);
                    }
                } catch (e) {
                    continue;
                }
            }
        } catch (e) {
            continue;
        }
    }
}