← Все статьи

Туториалы

Разблокируй копирование, выделение и правый клик на любой странице

Ты попадаешь на статью, хочешь скопировать абзац в свои заметки — и страница не даёт тебе выделить текст. Правый клик ничего не делает. Это не баг браузера, это намеренная блокировка в JavaScript страницы. Эта статья показывает, как снять её одним правилом JustZix.

Как страницы блокируют копирование

В HTML не существует никакого «режима только для чтения». Страница, блокирующая выделение, делает это двумя способами:

Оба можно отменить, потому что оба выполняются в браузере — а ты полностью контролируешь свой браузер.

Это законно?

Да. Текст уже на твоём экране — страница тебе его прислала. Снятие блокировки копирования не обходит никакой защиты контента, потому что её нет; это просто UX-раздражитель. Авторское право на сам текст — другой вопрос — что ты делаешь со скопированным фрагментом, зависит от тебя.

Правило — CSS плюс JS

Задай URL-паттерн на надоедающую страницу (или * глобально). На вкладке JavaScript правила вставь:

['copy', 'cut', 'contextmenu', 'selectstart', 'dragstart']
  .forEach(evt =>
    document.addEventListener(evt, e => e.stopPropagation(), true)
  );
const s = document.createElement('style');
s.textContent =
  '*{user-select:text!important;-webkit-user-select:text!important}';
document.documentElement.appendChild(s);

Как это работает

stopPropagation в фазе capture

Третий аргумент addEventListener, установленный в true, указывает фазу capture. Наш слушатель ловит событие до того, как оно достигнет обработчика страницы, и вызывает stopPropagation() — распространение останавливается, и обработчик страницы (тот, что с preventDefault()) никогда не получает событие.

Внедрённый style

Второй блок добавляет CSS-правило с user-select: text !important. !important бьёт любой user-select: none страницы. Мы внедряем его из JS (а не как CSS правила), чтобы он попал в самый конец каскада и наверняка выиграл.

Вариант только-CSS

Если блокировка чисто CSS, JS не нужен — достаточно вкладки CSS правила:

* { user-select: text !important; -webkit-user-select: text !important; }

Попробуй сначала это. Если выделение всё ещё не работает, страница блокирует и в JS, и тебе нужна полная версия.

Ловушки

Смотри также

Установи JustZix — и копируй с каждой страницы, которая пытается тебе помешать.

Оцени эту статью

Оценок пока нет — оцени первым.

Попробуй сам

Установи JustZix и вставь любой сниппет из этой статьи. Две минуты от нуля до работающего правила на всех твоих устройствах.

Получить JustZix

Возможности · Как это работает · Примеры · Применение