Si está utilizando Firefox , tiene suerte ya que la siguiente respuesta se aplica a usted. Si está utilizando Chrome, tiene mucha menos suerte, consulte la parte inferior de esta respuesta.
Greasemonkey dispara los scripts de usuario una vez que se carga el DOM , por lo que no necesita implementar un oyente "listo para DOM".
También estás en Firefox, por lo que puedes usar algunos dulces modernos: for...of
, let
.
Aquí está el script resultante de Greasemonkey:
// ==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');
}
Gracias a que let
no hay declaraciones locales, por lo tanto, no necesita incluir el código anterior en un IIFE .
Para los desafortunados usuarios de Chrome (Tampermonkey):
Los enlaces no se encuentran en el momento en que se ejecuta el script, aunque document.readyState === 'complete'
... como resultado, debe implementar algún bucle con temporizador.
Por lo tanto, terminas 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');
}
})();
Actualización de octubre de 2018:
debido a un cambio de marcado en la página de Google, fue h3.r
necesario cambiarlo a div.r
.
Fui más lejos y lo reemplacé h3.r > a
con #res .r > a
(reemplacé "tag.class" con solo ".class", y agregué un padre como seguridad para que el selector no sea demasiado genérico).