Si vous utilisez Firefox , vous avez de la chance car la réponse suivante s'applique à vous. Si vous utilisez Chrome, vous avez beaucoup moins de chance, voir le bas de cette réponse.
Greasemonkey déclenche les scripts utilisateur une fois le DOM chargé , vous n'avez donc pas besoin d'implémenter un écouteur "DOM ready".
Vous êtes également sur Firefox, vous pouvez donc utiliser des bonbons modernes: for...of
, let
.
Voici le script Greasemonkey résultant:
// ==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');
}
Grâce au let
il n'y a pas de déclarations locales, vous n'avez donc pas besoin de mettre le code ci-dessus dans un IIFE .
Pour les malheureux utilisateurs de Chrome (Tampermonkey):
Aucun lien n'est trouvé au moment de l'exécution du script, même si document.readyState === 'complete'
… par conséquent, vous devez implémenter une boucle avec timer.
Vous vous retrouvez donc avec:
// ==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');
}
})();
Mise à jour d'octobre 2018: en
raison d'un changement de balisage dans la page Google, il h3.r
fallait le remplacer par div.r
.
Je suis allé plus loin et remplacé h3.r > a
par #res .r > a
(remplacé "tag.class" par seulement ".class", et ajouté un parent comme sécurité pour que le sélecteur ne soit pas trop générique).