Главная страница » JS (jQuery) » Запрет копирования текста на сайте при помощи js

Запрет копирования текста на сайте при помощи js

Уникальный контент — очень ценный товар на просторах интернет пространства. Его очень любят поисковики и вознаграждают за качественный материал высокими позициями в выдаче. Поэтому, важно предпринять все возможные меры для защиты текстов вашего сайта.
Одним из самых простых способов уберечь свой контент от воровства — исключить возможность его копировать. На помощь в этом вопросе приходит JavaScript. Он позволяет наложить некоторые ограничения на действия пользователей на вашем сайте.
Например, если запретить выделять текст, невозможным станет произвести его копирование. Конечно, обойти такую защиту достаточно просто, отключив выполнение js в браузере. Но всё же, это потребует определённых изощрений со стороны вора, а от вас — лишь добавить на свой сайт несколько строк кода.
Если вам нужно наложить запрет копирования на весь документ, то следует отслеживать события на элементе body. Если текст, который нужно защитить от копирования находится внутри конкретного блока, то вешаем обработчик на данный элемент. Для этого напишем функцию в которую будем передавать имя нужного элемента.

function disableSelection(elem) { 
 if (typeof elem.onselectstart != "undefined") {
    return false;
 } 
 elem.style.cursor = "default"; 
}
disableSelection(document.body);

Как вы можете видеть, в момент срабатывания события onselectstart на элементе, функция возвращает ложь. Тем самым, лишая возможности выделять текст зажатой левой кнопкой мыши (ЛКМ).
Обратите внимание, что мы делаем проверку, которая позволит избежать ошибок js, если по каким-то причинам переданный нами элемент не будет присутствовать на странице.
Для того, чтобы курсор не менял свой вид, сохраняем его дефолтное состояние. Последняя строка кода — вызов нашей функции с переданным в неё параметром.

Бывают ситуации, когда требуется позволить пользователю копирование номеров телефона или электронной почты. Для таких элементов следует добавить исключения на запрет копирования. Как вариант, можно определять родительский элемент в том месте страницы, где произошло нажатие ЛКМ. Получив идентификатор или класс нужной «обертки» для текста, мы уже можем проверять её соответствие и возвращать ложь только в других случаях.

elem.onselectstart = function(event) {
   var parentElem = event.srcElement.parentElement;
   if(!parentElem.classList.contains('className')) {
      return false;
   }
}

При этом, не рекомендую отключать вывод контекстного меню. Данный шаг может сильно раздражать пользователей привыкших открывать ссылки через ПКМ. Да и мало ли, по каким безобидным для вас причинам пользователь захочет вызвать контекстное меню. Не стоит перебарщивать с ограничениями.

Добавить комментарий