Wenn Sie Firefox verwenden , haben Sie Glück, da die folgende Antwort auf Sie zutrifft. Wenn Sie Chrome verwenden, haben Sie weitaus weniger Glück. Weitere Informationen finden Sie am Ende dieser Antwort.
Greasemonkey löst die Benutzerskripte aus, sobald das DOM geladen ist , sodass Sie keinen Listener "DOM ready" implementieren müssen.
Du bist auch in Firefox, also kannst du ein paar moderne Süßigkeiten benutzen: for...of, let.
Hier ist das resultierende Greasemonkey-Skript:
// ==UserScript==
// @name Remove Google redirects
// @namespace google
// @description Remove redirects from Google Search result links.
// @include https://www.google.*/*
// @version 1
// @grant none
// ==/UserScript==
for (let element of document.querySelectorAll('#res .r > a')) {
element.removeAttribute('onmousedown');
}
Dank dem letes keine lokalen Erklärungen, daher müssen Sie nicht den obigen Code in einem müssen umschließen IIFE .
Für die unglücklichen Nutzer von Chrome (Tampermonkey):
Verknüpfungen werden zum Zeitpunkt der Ausführung des Skripts nicht gefunden, obwohl document.readyState === 'complete'... Sie daher eine Schleife mit Timer implementieren müssen.
Daher erhalten Sie am Ende Folgendes:
// ==UserScript==
// @name Remove Google redirects
// @namespace google
// @description Remove redirects from Google Search result links.
// @include https://www.google.*/*
// @version 1
// @grant none
// ==/UserScript==
(function removeGoogleRedirects() {
var links = document.querySelectorAll('#res .r > a');
if (links.length === 0) {
setTimeout(removeGoogleRedirects, 100);
return;
}
for (var link of links) {
link.removeAttribute('onmousedown');
}
})();
Update Oktober 2018:
Aufgrund einer Markup-Änderung auf der Google-Seite musste die h3.rgeändert werden div.r.
Ich ging weiter und ersetzte h3.r > adurch #res .r > a(ersetzte "tag.class" durch ".class" und fügte ein übergeordnetes Element als Sicherheit hinzu, damit der Selektor nicht zu allgemein ist).