Se stai usando Firefox , sei fortunato perché la seguente risposta è valida per te. Se stai usando Chrome, sei molto meno fortunato, vedi il fondo di questa risposta.
Greasemonkey attiva gli script utente una volta caricato il DOM , quindi non è necessario implementare un listener "DOM ready".
Anche tu sei su Firefox, quindi puoi usare alcune caramelle moderne: for...of, let.
Ecco lo script Greasemonkey risultante:
// ==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');
}
Grazie a letnon ci sono dichiarazioni locali, quindi non è necessario racchiudere il codice sopra in un IIFE .
Per gli sfortunati utenti di Chrome (Tampermonkey):
I collegamenti non vengono trovati al momento dell'esecuzione dello script, anche se document.readyState === 'complete'... di conseguenza è necessario implementare alcuni loop con timer.
Pertanto, si finisce con:
// ==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');
}
})();
Aggiornamento ottobre 2018: a
causa di una modifica del markup nella pagina di Google, è h3.rnecessario modificarlo in div.r.
Sono andato più lontano e sostituito h3.r > acon #res .r > a(sostituito "tag.class" con solo ".class", e ho aggiunto un genitore come sicurezza in modo che il selettore non sia troppo generico).