कष्टप्रद "और पढ़ें" सामग्री जोड़ने वाली साइट ShareThis है।
इस बुरे व्यवहार को रोकने के लिए, आपके पास तीन अलग-अलग विकल्प हैं:
क्लिपबोर्ड घटनाओं को अक्षम करें
ये वेबसाइट क्लिपबोर्ड एपीआई का उपयोग कर रहे हैं , जो वेब डेवलपर्स को कॉपी / कट / पेस्ट क्रियाओं को रोकने और कुछ कोड निष्पादित करने की अनुमति देता है जब वे प्रदर्शन किए जाते हैं। यह है कि ShareThis (और उस जैसी अन्य वेबसाइट) कैसे काम करती है। यह बस कॉपी ईवेंट की प्रतीक्षा करता है और प्रभावी कॉपी होने से ठीक पहले यह पाठ की एक अतिरिक्त "परत" जोड़ता है जिसमें कष्टप्रद "- देखें ..." होता है।
अब सवाल यह है: क्या क्लिपबोर्ड घटनाओं को अक्षम करने के लिए किसी प्रकार की विधि है? दुर्भाग्य से, मुझे क्रोम / क्रोमियम में ऐसा करने का कोई तरीका नहीं मिल पाया है, लेकिन फ़ायरफ़ॉक्स में यह दो अलग-अलग तरीकों से संभव है।
- अंदर जाओ
about:configऔर खोजो dom.event.clipboardevents.enabled। कुंजी पर डबल क्लिक करें (इसे सेट करें false) और वॉइला! आपने क्लिपबोर्ड घटनाओं को अक्षम कर दिया है और कोई भी आपके क्लिपबोर्ड को फिर से नहीं छूएगा।
- फ़ायरफ़ॉक्स के पुराने संस्करणों (वास्तव में, वास्तव में पुराने) के लिए, यह एक्सटेंशन है जो
about:configविकल्प का सटीक समान कार्य करता है।
क्लिपबोर्ड ईवेंट को अक्षम करने से किसी भी वेबसाइट के अनुभव को नुकसान नहीं पहुंचना चाहिए क्योंकि वे शायद ही कभी उपयोग किए जाते हैं और वास्तव में उनका उपयोग करने का कोई उद्देश्य नहीं है (स्पैम के अलावा)।
चलो दूसरे समाधान के लिए सिर।
ShareThis ब्लॉक करें
यदि आपको ShareThis की आवश्यकता नहीं है, तो आप बस w.sharethis.comडोमेन को ब्लॉक कर सकते हैं । ShareThis (और पंजीकरण ClipboardEvent) को लोड करने के लिए जिम्मेदार जावास्क्रिप्ट उस वेबसाइट से भरी हुई है।
आप इसे अलग-अलग तरीकों से अवरुद्ध कर सकते हैं, जिसमें एक साधारण AdBlock फ़िल्टर से लेकर आपकी होस्ट फ़ाइल को संपादित करना शामिल है (यह मेरी प्रतिष्ठा के कारण अधिक लिंक नहीं डाल सकता है, क्योंकि मैं इसे कवर नहीं किया गया है और न ही यहां लिंक किया गया है)।
hostsफ़ाइल के माध्यम से करने का एक उदाहरण :
127.0.0.1 w.sharethis.com
तीसरा समाधान सबसे कठिन है और इसका उपयोग केवल अंतिम उपाय के रूप में किया जाना चाहिए।
समस्याग्रस्त वेबसाइटों पर चयन सुविधा को अक्षम करें
क्लिपबोर्ड पर कॉपी की गई सामग्री को संपादित करने के लिए, ये वेबसाइट Selectionएपीआई का उपयोग करती हैं जो उन्हें ऑन-द-फ्लाई के चयन को संपादित करने की अनुमति देती है। तो, एक समाधान पूरी तरह से किसी भी तरह से अक्षम करना है Selection(कोड-साइड पर, जाहिर है। आप अभी भी चयन करने में सक्षम होंगे)।
यह एक साधारण टेम्परॉन्की / ग्रीसेमोनीकी स्क्रिप्ट के साथ किया जा सकता है। मैंने इसे केवल फ़ायरफ़ॉक्स पर परीक्षण किया क्योंकि मैं अभी क्रोम स्थापित नहीं कर सकता। उसके लिए मैं क्षमा चाहता हूँ।
मूल कोड यही है:
// ==UserScript==
// @name Goodbye selections
// @namespace tag: utils
// @include $put_here_a_website_you'd_like_to_disable_selections$
// @include $more_websites$
// @version 1
// @grant none
// ==/UserScript==
(function() {
var disableSelections = function() {
document.getSelection = window.getSelection = function() {
return { isCollapsed: true };
};
};
var script = document.createElement ("script");
script.appendChild (document.createTextNode ("(" + disableSelections + ")();"));
(document.body || document.head || document.documentElement).appendChild (script);
})();
इस काम को करने के लिए, आपको एक नई Greasemonkey / Tampermonkey स्क्रिप्ट बनानी चाहिए और @includeनिर्देशों को समायोजित करना चाहिए । आप प्रति पंक्ति एक वेबसाइट डाल सकते हैं, और इसे करना होगा @include http://bad.website.address/।
मैंने इसे आपके द्वारा लिंक की गई दोनों वेबसाइटों के साथ परीक्षण किया और यह बिना किसी समस्या के काम करता है। हालाँकि, ध्यान रखें कि इससे समस्याएँ हो सकती हैं क्योंकि Selections का उपयोग पूरी तरह से वैध वेबसाइटों द्वारा किया जाता है (उदाहरण के लिए, StackExchange textboxes उनका उपयोग एक प्रतीक सम्मिलित करने के लिए करते हैं, जब आप बटन पर क्लिक करते हैं, तो अपनी कैरेट की स्थिति में), इसलिए आपको सक्षम होना चाहिए कि समस्याग्रस्त वेबसाइटों पर केवल उपयोगकर्ता नाम।
(ध्यान दें कि //यदि आपको Greasemonkey / Tampermonkey मेनू से उपयोगकर्तास्क्रिप्ट बना रहे हैं, तो वे उन पंक्तियों को हटाने की आवश्यकता हो सकती है , वे स्वचालित रूप से जोड़ देंगे)
उपयोगकर्तास्क्रिप्ट की व्याख्या बहुत सरल है। सबसे पहले, यह एक फ़ंक्शन को परिभाषित करता है जिसका नाम disableSelectionsडिफ़ॉल्ट होता है document.getSelectionऔर window.getSelectionएक के साथ कार्य करता है जो केवल एक ऑब्जेक्ट युक्त रिटर्न देता है { isCollapsed: true }। क्यूं कर? क्योंकि ShareThis (मैंने उनके जेएस कोड में चेक किया) उस फ़ंक्शन को कॉल करता है और जांचता है कि क्या isCollapsedसंपत्ति सेट है true(यदि यह है, तो यह "क्लिपबोर्ड पॉइज़निंग" को रोक देता है)। उस तरह की अन्य वेबसाइटें शायद उस चेक का प्रदर्शन नहीं करेंगी, लेकिन वे केवल एक त्रुटि के साथ समाप्त हो जाएंगी जब वे Selectionऑब्जेक्ट के कानूनी फ़ंक्शन को कॉल करने का प्रयास करेंगे ।
फिर फ़ंक्शन को बॉडी / हेडर / डॉक्यूमेंट में इंजेक्ट किया जाता है और इसे स्वचालित रूप से निष्पादित किया जाएगा। एक प्रश्न जो आप पूछ सकते हैं: यदि जावास्क्रिप्ट प्रत्येक फ़ंक्शन को ओवरराइड करने की अनुमति देता है, तो आपने addEventListenerफ़ंक्शन को कॉपी / कट / पेस्ट करने के लिए फ़ंक्शन को ओवरराइड करने के लिए क्यों नहीं ओवरराइड किया ? जवाब बहुत आसान है। एक उपयोगकर्तास्क्रिप्ट को एक गैर-आसानी से पूर्वानुमानित समय पर निष्पादित किया जाता है, इसका मतलब है कि ShareThis जावास्क्रिप्ट को उपयोगकर्तास्क्रिप्ट से पहले लोड किया जा सकता है , और यह कुछ भी नहीं करेगा। इसके बजाय, केवल window.getSelectionफ़ंक्शन को ओवरराइड करने से कोई समस्या नहीं होगी क्योंकि उस फ़ंक्शन को केवल तभी कहा जाता है जब एक कॉपी किया जाता है, और हम 100% सुनिश्चित हैं कि जब आप किसी पाठ की प्रतिलिपि बनाते हैं, तो उपयोगकर्ता नाम पहले ही लोड हो चुका है।
निष्कर्ष
सबसे अच्छा और साफ समाधान स्पष्ट रूप से पहला है, क्योंकि यह व्यावहारिक रूप से बेकार एपीआई को निष्क्रिय करता है।
दूसरा एक भी मान्य है, लेकिन आप ShareThis कार्यक्षमता में से किसी को खो देंगे।
तीसरा सबसे "हैकी" एक है, लेकिन अंतिम उपाय के रूप में यह काम कर सकता है।