Jika Anda menggunakan Firefox , Anda beruntung karena jawaban berikut berlaku untuk Anda. Jika Anda menggunakan Chrome, Anda kurang beruntung, lihat bagian bawah jawaban ini.
Greasemonkey memecat skrip pengguna setelah DOM dimuat , sehingga Anda tidak perlu menerapkan pendengar "siap DOM".
Anda juga menggunakan Firefox, sehingga Anda dapat menggunakan beberapa permen modern: for...of
, let
.
Berikut adalah skrip Greasemonkey yang dihasilkan:
// ==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');
}
Berkat let
tidak ada deklarasi lokal, oleh karena itu Anda tidak perlu menyertakan kode di atas dalam IIFE .
Untuk pengguna Chrome (Tampermonkey) yang malang:
Tautan tidak ditemukan pada saat skrip dieksekusi, meskipun document.readyState === 'complete'
... sebagai hasilnya Anda harus mengimplementasikan beberapa loop dengan timer.
Karena itu, Anda berakhir dengan:
// ==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');
}
})();
Pembaruan Oktober 2018:
Karena perubahan markup di halaman Google, h3.r
perlu diubah ke div.r
.
Saya pergi lebih jauh dan diganti h3.r > a
dengan #res .r > a
(diganti "tag.class" dengan hanya ".class", dan menambahkan orangtua sebagai keamanan sehingga pemilih tidak terlalu generik).