Якщо ви використовуєте Firefox , вам пощастило, оскільки наступна відповідь стосується вас. Якщо ви користуєтеся Chrome, вам пощастило набагато менше, дивіться внизу цієї відповіді.
Greasemonkey запускає сценарії користувачів після завантаження DOM , таким чином, вам не потрібно реалізовувати "DOM Ready" слухача.
Також ви перебуваєте на Firefox, тому ви можете використовувати деякі сучасні цукерки: for...of
, let
.
Ось отриманий сценарій 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');
}
Завдяки тому, let
що немає місцевих декларацій, тому вам не потрібно додавати вищевказаний код до додавати IIFE .
Для нещасних Chrome (Tampermonkey):
Посилання не знайдено в момент виконання сценарію, навіть незважаючи на це document.readyState === 'complete'
… у результаті вам доведеться реалізувати певний цикл із таймером.
Тому ви закінчуєте:
// ==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');
}
})();
Оновлення жовтня 2018 року:
через зміну розмітки на сторінці Google, її h3.r
потрібно змінити на div.r
.
Я пішов далі і замінити h3.r > a
з #res .r > a
(замінено «tag.class» з просто «.class», і додав батько як безпеку , з тим , що селектор не надто загальний характер ).