বিরক্তিকর "আরও পড়ুন" স্টাফ যুক্ত করা সাইটটি শেয়ারটিস।
এই খারাপ আচরণ রোধ করতে আপনার তিনটি ভিন্ন বিকল্প রয়েছে:
ক্লিপবোর্ড ইভেন্টগুলি অক্ষম করুন
এই ওয়েবসাইটগুলি ক্লিপবোর্ডের এপিআইগুলি ব্যবহার করছে , যা ওয়েব বিকাশকারীদের অনুলিপি / কাটা / পেস্ট ক্রিয়াকলাপগুলি বন্ধ করতে দেয় এবং যখন কিছু সম্পাদিত হয় তখন কিছু কোড কার্যকর করতে পারে। এভাবেই শেয়ারটিস (এবং অন্যান্য ওয়েবসাইটগুলি) কাজ করে। এটি কেবল অনুলিপি ইভেন্টের জন্য অপেক্ষা করে এবং কার্যকর অনুলিপি সম্পাদনের ঠিক আগে এটি পাঠ্যের একটি অতিরিক্ত "স্তর" যুক্ত করে যা বিরক্তিকর "- দেখুন ..." রয়েছে।
এখন প্রশ্ন: ক্লিপবোর্ড ইভেন্টগুলি অক্ষম করার জন্য কি কোনও ধরণের পদ্ধতি আছে? দুর্ভাগ্যক্রমে, আমি ক্রোম / ক্রোমিয়ামে এটি করার জন্য কোনও পদ্ধতি খুঁজে পাইনি, তবে ফায়ারফক্সে এটি দুটি ভিন্ন উপায়ে সম্ভব।
- ভিতরে যান
about:configএবং অনুসন্ধান করুন dom.event.clipboardevents.enabled। কীতে ডাবল ক্লিক করুন (এটি সেট করুন false) এবং ভয়েলা! আপনি ক্লিপবোর্ড ইভেন্টগুলি অক্ষম করেছেন এবং আপনার ক্লিপবোর্ডটি আর কেউ স্পর্শ করবে না।
- ফায়ারফক্সের পুরানো সংস্করণগুলির জন্য (সত্যই, সত্যই পুরানো), এই এক্সটেনশনটি রয়েছে যা
about:configবিকল্পটির ঠিক একই জিনিসটি করে ।
ক্লিপবোর্ড ইভেন্টগুলি অক্ষম করা কোনও ওয়েবসাইটের অভিজ্ঞতা ক্ষতিগ্রস্থ করা উচিত নয় যেহেতু সেগুলি খুব কমই ব্যবহৃত হয় এবং এগুলি ব্যবহার করার কোনও উদ্দেশ্য নেই (স্প্যামিং ছাড়া অন্য)।
আসুন দ্বিতীয় সমাধানের দিকে এগিয়ে যান।
এই শেয়ারটি ব্লক করুন
আপনার যদি শেয়ারটি এটির দরকার না হয় তবে আপনি কেবল w.sharethis.comডোমেনটি ব্লক করতে পারেন । জাভাস্ক্রিপ্ট শেয়ারটি লোড করার জন্য দায়ী (এবং নিবন্ধকরণ ClipboardEvent) সেই ওয়েবসাইট থেকে লোড করা হয়েছে।
আপনি এটিকে বিভিন্ন উপায়ে ব্লক করতে পারেন, একটি সাধারণ অ্যাডব্লক ফিল্টার থেকে আপনার হোস্ট ফাইল সম্পাদনা করা অবধি (এটি আমার কীর্তির কারণে আরও লিঙ্ক রাখতে পারি না বলে এটি এখানে আচ্ছাদিত বা লিঙ্কযুক্ত নয়)।
hostsফাইলের মাধ্যমে এটি করার একটি উদাহরণ :
127.0.0.1 w.sharethis.com
তৃতীয় সমাধানটি সবচেয়ে কঠিন এবং এটি কেবল সর্বশেষ সমাধান হিসাবে ব্যবহার করা উচিত।
সমস্যাযুক্ত ওয়েবসাইটগুলিতে নির্বাচন বৈশিষ্ট্যটি অক্ষম করুন
ক্লিপবোর্ডে অনুলিপি করা সামগ্রীটি সম্পাদনা করতে, এই ওয়েবসাইটগুলি Selectionএপিআই ব্যবহার করে যা সেগুলি ফ্লাই-অনে ফ্ল্যাশনে নির্বাচনগুলি সম্পাদনা করার অনুমতি দেয়। সুতরাং, সমাধানটি হ'ল কোনও ধরণের সম্পূর্ণরূপে অক্ষম করা Selection(কোড-সাইডে, স্পষ্টতই You আপনি এখনও নির্বাচনগুলি সম্পাদন করতে সক্ষম হবেন)।
এটি একটি সাধারণ ট্যাম্পার্মনকি / গ্রিসমোনকি স্ক্রিপ্টের সাহায্যে করা যায়। আমি এটি এখন ফায়ারফক্সে পরীক্ষা করেছি যেহেতু আমি এখনই Chrome ইনস্টল করতে পারছি না। আমি এটার জন্য দুঃখিত.
এটি উত্স কোড:
// ==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);
})();
এই কাজটি করতে, আপনার একটি নতুন গ্রিসমোনকি / ট্যাম্পারমনকি স্ক্রিপ্ট তৈরি করা উচিত এবং @includeদিকনির্দেশগুলি সামঞ্জস্য করুন । আপনি প্রতি লাইনে একটি ওয়েবসাইট রাখতে পারেন এবং এটির মতো কাজও করতে হবে @include http://bad.website.address/।
আপনার লিঙ্কযুক্ত দুটি ওয়েবসাইটই আমি এটি পরীক্ষা করেছি এবং এটি কোনও সমস্যা ছাড়াই কাজ করে। তবে, মনে রাখবেন যে এটি সমস্যার কারণ হতে পারে যেহেতু Selectionপুরোপুরি আইনী ওয়েবসাইটগুলি ব্যবহার করে (উদাহরণস্বরূপ, স্ট্যাকএক্সচেঞ্জের পাঠ্যবক্সগুলি একটি চিহ্ন সন্নিবেশ করার জন্য এগুলি ব্যবহার করে, যখন আপনি বাটনে ক্লিক করেন, আপনার ক্যারেটের অবস্থানে), সুতরাং আপনার সক্ষম করা উচিত যে সমস্যাযুক্ত ওয়েবসাইটগুলিতে কেবল ব্যবহারকারী স্ক্রিপ্ট।
(মনে রাখবেন যে আপনি //যদি গ্রিসমোনকি / ট্যাম্পারমনকি মেনু থেকে ইউজার স্ক্রিপ্ট তৈরি করে থাকেন তবে শুরু হওয়া লাইনগুলি সরিয়ে ফেলতে আপনার প্রয়োজন হতে পারে)
ইউজারস্ক্রিপ্টের ব্যাখ্যাটি বেশ সহজ। প্রথমত, এটি নামের একটি ফাংশন সংজ্ঞায়িত করে disableSelectionsযা ডিফল্টকে প্রতিস্থাপন করে document.getSelectionএবং এমন একটি দিয়ে ফাংশন করে যা window.getSelectionকেবলমাত্র কোনও বস্তু ধারণ করে ফিরে দেয় { isCollapsed: true }। কেন? কারণ শেয়ারটিস (আমি তাদের জেএস কোডটিতে চেক করেছি) সেই ফাংশনটিকে কল করে এবং isCollapsedসম্পত্তিটি সেট করা আছে trueকিনা তা পরীক্ষা করে (যদি এটি হয় তবে এটি "ক্লিপবোর্ডে বিষাক্তকরণ" থামায়)। এর মতো অন্যান্য ওয়েবসাইটগুলি সম্ভবত এই চেকটি সম্পাদন করবে না, তবে তারা যখন Selectionঅবজেক্টটির বৈধ ফাংশনটি কল করার চেষ্টা করবে তখন এগুলি কেবল একটি ত্রুটির সাথে শেষ হবে ।
তারপরে ফাংশনটি বডি / শিরোনাম / নথিতে ইনজেক্ট করা হয় এবং এটি স্বয়ংক্রিয়ভাবে কার্যকর হয়ে যায়। একটি প্রশ্ন আপনি জিজ্ঞাসা করতে পারেন: জাভাস্ক্রিপ্ট যদি প্রতিটি ফাংশনকে (প্রায়) ওভাররাইড করতে দেয় addEventListenerতবে ইভেন্টের অনুলিপি / কাটা / পেস্ট করার সময় আপনি কেন কেবল ফাংশনটিকে ওভাররাইড করেননি ? উত্তরটি বেশ সহজ। একটি ব্যবহারকারী-স্ক্রিপ্ট একটি অনায়াসে-পূর্বাভাসযোগ্য সময়ে কার্যকর করা হয়, এর অর্থ এই যে শেয়ারটিস জাভাস্ক্রিপ্টটি ব্যবহারকারীর স্ক্রিপ্টের আগে লোড করা যেতে পারে এবং এটি কিছুই করবে না। পরিবর্তে, window.getSelectionফাংশনটি কেবল ওভাররাইড করেই কোনও সমস্যা হবে না কারণ সেই ফাংশনটি কেবল তখনই অনুলিপি করা হয় যখন কোনও অনুলিপি সঞ্চালিত হয়, এবং আমরা 100% নিশ্চিত যে আপনি যখন কোনও পাঠ্য অনুলিপি করেন, ব্যবহারকারী স্ক্রিপ্টটি ইতিমধ্যে লোড হয়ে গেছে।
উপসংহার
সর্বোত্তম এবং পরিষ্কার সমাধান হ'ল স্পষ্টতই প্রথমটি, যেহেতু এটি একটি ব্যবহারিকভাবে অকেজো API এ অক্ষম করে।
দ্বিতীয়টিটিও বৈধ, তবে আপনি যে কোনও শেয়ারThis কার্যকারিতা হারাবেন।
তৃতীয়টি সর্বাধিক "হ্যাকি", তবে শেষ উপায় হিসাবে এটি কাজ করতে পারে।