Сайт, добавляющий раздражающий материал «Читать дальше», - ShareThis.
Чтобы предотвратить это плохое поведение, у вас есть три различных варианта:
Отключить события буфера обмена
Эти веб-сайты используют API-интерфейсы Clipboard , которые позволяют веб-разработчикам перехватывать действия копирования / вырезания / вставки и выполнять некоторый код при их выполнении. Вот как работает ShareThis (и другие подобные сайты). Он просто ожидает события копирования и непосредственно перед выполнением эффективной копии добавляет дополнительный «слой» текста, который содержит раздражающее «- Смотрите ...».
Теперь вопрос: есть ли способ отключить события буфера обмена? К сожалению, я не смог найти способ сделать это в Chrome / Chromium, но в Firefox это возможно двумя разными способами.
- Идите
about:config
и ищите dom.event.clipboardevents.enabled
. Дважды щелкните по ключу (установите его false
) и вуаля! Вы отключили события буфера обмена, и никто не будет снова трогать ваш буфер обмена.
- Для более старых версий Firefox (действительно, очень старых) есть это расширение, которое делает то же самое с
about:config
опцией.
Отключение событий буфера обмена не должно повредить работе любого веб-сайта, так как они используются редко, и на самом деле нет цели использовать их (кроме спама).
Давайте перейдем ко второму решению.
Блок ShareThis
Если вам не нужен ShareThis, вы можете просто заблокировать w.sharethis.com
домен. Javascript, ответственный за загрузку ShareThis (и регистрацию ClipboardEvent
), загружается с этого сайта.
Вы можете заблокировать его по-разному, от простого фильтра AdBlock до редактирования вашего хост-файла (здесь это не рассматривается и не связано, поскольку я не могу добавить больше ссылок из-за своей репутации).
Пример выполнения этого через hosts
файл:
127.0.0.1 w.sharethis.com
Третий вариант - самый сложный, и его следует использовать только в качестве крайней меры.
Отключить функцию выбора на проблемных сайтах
Для редактирования содержимого, которое копируется в буфер обмена, эти веб-сайты используют Selection
API, который позволяет им редактировать выборки на лету. Таким образом, решение состоит в том, чтобы полностью отключить любой вид Selection
(на стороне кода, очевидно. Вы все еще сможете выполнять выборки).
Это можно сделать с помощью простого скрипта Tampermonkey / Greasemonkey. Я тестировал его только на Firefox, так как сейчас не могу установить 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);
})();
Чтобы это работало, вы должны создать новый скрипт Greasemonkey / Tampermonkey и настроить @include
директивы. Вы можете поставить один сайт на строку, и это должно быть сделано, как @include http://bad.website.address/
.
Я протестировал его на обоих сайтах, на которые вы ссылались, и он работает без проблем. Однако имейте в виду, что это может вызвать проблемы, поскольку Selection
s используются совершенно законными веб-сайтами (например, текстовые поля StackExchange используют их для вставки символа, когда вы нажимаете кнопку, в положение вашей каретки), поэтому вам следует включить этот пользовательский скрипт только на проблемных сайтах.
(обратите внимание, что вам может понадобиться удалить строки, начинающиеся с того, что //
если вы создаете скрипт пользователя из меню Greasemonkey / Tampermonkey, они автоматически добавят его)
Объяснение usercript довольно простое. Во-первых, он определяет функцию с именем, disableSelections
которая заменяет значение по умолчанию, document.getSelection
а window.getSelection
функции - на функцию, которая просто возвращает содержащий объект { isCollapsed: true }
. Зачем? Потому что ShareThis (я проверил в их коде JS) вызывает эту функцию и проверяет, установлено ли isCollapsed
свойство в true
(если оно есть, это останавливает «отравление буфера обмена»). Другие веб-сайты, подобные этому, возможно, не будут выполнять эту проверку, но в результате просто вызовут ошибку, когда попытаются вызвать законную функцию Selection
объекта.
Затем функция вводится в тело / заголовок / документ и будет автоматически выполняться. Вы можете задать вопрос: если Javascript позволяет переопределить (почти) каждую функцию, почему вы не переопределили addEventListener
функцию, которая просто ничего не делает, когда событие копируется / вырезается / вставляется? Ответ довольно прост. Пользовательский скрипт выполняется в непросто предсказуемое время, это означает, что Javascript ShareThis может быть загружен раньше, чем пользовательский скрипт, и он ничего не сделает. Вместо этого, просто переопределив window.getSelection
функцию, проблем не возникнет, поскольку эта функция вызывается только при выполнении копирования, и мы на 100% уверены, что при копировании текста пользовательский скрипт уже загружен.
Вывод
Лучшее и самое чистое решение, очевидно, первое, поскольку оно отключает практически бесполезный API.
Второй также действителен, но вы потеряете любую функцию ShareThis.
Третий - самый «взломанный», но в крайнем случае он может сработать.
Эти одиозные действия можно заблокировать в Chrome с помощью расширения «Убить зло»:
https://chrome.google.com/webstore/detail/kill-evil/epieehnpcepgfiildhdklacomihpoldk
(РЕДАКТИРОВАТЬ) Это расширение, кажется, вызывает странные проблемы на Facebook, обязательно внесите его в белый список.
источник
Хотя это дополнение к Firefox, NoScript позволяет блокировать JavaScript с любого веб-сайта путем настройки ненадежного списка.
источник
Если вы ищете способ автоматического изменения HTML-кода перед его отображением, то Greasemonkey - это инструмент, и вам нужно будет создать пользовательский скрипт, который выполняет изменение.
Из статьи Руководство для начинающих для скриптов Greasemonkey в Google Chrome :
В Интернете можно найти много информации о Greasemonkey, в том числе множество учебных пособий. Большинство из них были бы для Firefox, где возникла Greasemonkey, но они также применяются сегодня к Chrome.
Так как сайт отвечает за «Читать дальше»
sharethis.com
. Если вы заблокируете это, это должно прекратиться. Если у вас установлен пакет безопасности, используйте его для блокировки сайта. В противном случае вы можете заблокировать его, используя файл hosts .sharethis.com
является поставщиком, который поставляет Tynt на два сайта, которые вы мне дали. Tynt выглядит скорее технологией, чем веб-сайтом, поэтому, конечно, могут быть и другие подобные провайдеры, но нужно надеяться, что они будут довольно редкими.источник
На Chromium у меня был успех с расширением Absolute Enable Right Click & Copy .
Установив его, вы можете добавить свой список пользователей сайтов, где расширение включено в настройках. Или, когда вы находитесь на определенной странице и видите, что она вмешивается в ваш буфер обмена, вы можете включить это расширение на лету с помощью кнопки на панели инструментов (это автоматически добавит сайт в ваш список).
источник
Также можно использовать расширение «Копировать как обычный текст» для Chrome. Затем у вас есть дополнительная опция в меню, кроме обычного копирования. С другой стороны, он работает в Chrome и ничего не ломает. https://chrome.google.com/webstore/detail/copy-as-plain-text-amazin/mkkcgjeddgdnikkeoinjgbocghokolck?utm_source=chrome-app-launcher-info-dialog
источник