यदि आप फ़ायरफ़ॉक्स का उपयोग कर रहे हैं , तो आप भाग्यशाली हैं क्योंकि निम्नलिखित उत्तर आप पर लागू होता है। यदि आप क्रोम का उपयोग कर रहे हैं, तो आप बहुत कम भाग्यशाली हैं, इस उत्तर के नीचे देखें।
Greasemonkey एक बार DOM लोड होने के बाद यूजर स्क्रिप्ट को फायर करता है , इस प्रकार आपको "DOM तैयार" श्रोता को लागू करने की आवश्यकता नहीं है।
इसके अलावा, आप फ़ायरफ़ॉक्स पर हैं, इसलिए आप कुछ आधुनिक कैंडी का उपयोग कर सकते हैं: 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 में उपरोक्त कोड संलग्न करने की आवश्यकता नहीं है ।
दुर्भाग्यपूर्ण क्रोम (टेम्परमॉन्की) उपयोगकर्ताओं के लिए:
लिंक स्क्रिप्ट के निष्पादित होने के समय नहीं पाए जाते हैं, भले ही 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(प्रतिस्थापित बस ".class" के साथ "tag.class", और सुरक्षा के रूप में एक माता पिता जोड़ा ताकि चयनकर्ता भी सामान्य नहीं है)।