Nếu bạn đang sử dụng Firefox , bạn thật may mắn vì câu trả lời sau đây áp dụng cho bạn. Nếu bạn đang sử dụng Chrome, bạn sẽ kém may mắn hơn nhiều, hãy xem phần dưới của câu trả lời này.
Greasemonkey kích hoạt các tập lệnh người dùng sau khi DOM được tải , do đó bạn không cần phải thực hiện trình nghe "DOM ready".
Ngoài ra bạn đang ở trên Firefox, vì vậy bạn có thể sử dụng một số kẹo hiện đại: for...of
, let
.
Đây là tập lệnh Greasemonkey kết quả:
// ==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');
}
Nhờ let
không có khai báo cục bộ, do đó bạn không cần phải gửi mã ở trên trong IIFE .
Đối với người dùng Chrome (Tampermonkey) không may :
Các liên kết không được tìm thấy tại thời điểm tập lệnh được thực thi, mặc dù document.readyState === 'complete'
kết quả là bạn phải thực hiện một số vòng lặp với bộ đếm thời gian.
Do đó, bạn kết thúc với:
// ==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');
}
})();
Cập nhật tháng 10 năm 2018:
Do thay đổi đánh dấu trong trang Google, h3.r
cần phải thay đổi thành div.r
.
Tôi đã đi xa hơn và thay thế h3.r > a
bằng #res .r > a
(thay thế "tag. Class" chỉ bằng ". Class" và thêm cha mẹ làm bảo mật để bộ chọn không quá chung chung).