При проектировании сайта бывают ситуации, когда выбор текста нежелателен. Это может относиться не ко всей веб-странице, а только к определенным элементам на ней. Отключение возможности выделения и выделения текста может быть достигнуто различными способами. Использование JavaScript, это один из методов, но иногда предпочтение отдается использованию CSS.
Вариант CSS 1
Следующий код CSS охватывает отключение выделения текста во всех основных браузерах:
HTML
Код
 <p>
Выбираемый текст.
</p>
<p class="demipo_sakiles">
Не выбираемый текст.
</p>
CSS
Код
.demipo_sakiles {
-webkit-touch-callout: none;
/* iOS Safari */
-webkit-user-select: none;
/* Chrome/Safari/Opera */
-khtml-user-select: none;
/* Konqueror */
-moz-user-select: none;
/* Firefox */
-ms-user-select: none;
/* Internet Explorer / Edge */
user-select: none;
/* Версия без префикса, в настоящее время не поддерживается ни одним браузером */
}
Почти все браузеры поддерживаются пользователем, кроме Internet Explorer 9 и более ранних версий. Однако, поскольку это не стандартная функция, могут возникнуть проблемы при реализации кода в разных браузерах
Демонстрация
Вариант CSS №2
Альтернативный подход CSS с использованием контейнера div будет использовать следующий код:
HTML
Код
<div id="zornet_ru" class="atudsam-igedsamib">это описание не скопировать</div>
CSS
Код
.atudsam-igedsamib {
-moz-user-select: none;
-khtml-user-select: none;
-webkit-user-select: none;
-ms-user-select: none; user-select: none;
}
Поскольку это свойство не следует, так как тег придется применять для каждого элемента в контейнере div
Опция Javascript
Опция JavaScript должна быть рассмотрена, когда вышеупомянутые опции CSS не работают. Следующий код может быть использован для потомков элемента.
Код
function makeUnselectable(node) {
if (node.nodeType == 1) {
node.setAttribute("unselectable", "on");
}
var child = node.firstChild; while (child) {
makeUnselectable(child); child = child.nextSibling;
}
}
makeUnselectable(document.getElementById("foo")); 
Более простой вариант JavaScript, который можно рассмотреть:
Код
onselectstart="return false;"
Важно помнить, что ни один из этих вариантов не охватывает все возможности. Кроме того, возможность выбора отключена только внутри элементов, покрытых кодом CSS или JavaScript.
Другие элементы до и после целевого текста могут быть выделены. Этот подход не идеален для отключения выделения текста и выделения всей страницы.
Помните, что нет быстрого и простого способа реализовать эту функцию, особенно с помощью CSS, поэтому Javascript может быть наиболее приемлемым вариантом.
Средствами JavaScript (jQuery)
Суть скрипта — добавить все тот же набор CSS-правил для всех браузеров, создать атрибут unselectable и вернуть false при возникновении события onselectstart в IE.
Завернем наш скрипт в плагин, например jquery.disableSelection.js
Код
jQuery.fn.extend({ 
  disableSelection : function() { 
    this.each(function() { 
      this.onselectstart = function() { return false; }; 
      this.unselectable = "on"; 
 
      jQuery(this).css({ 
        '-moz-user-select': 'none',
        '-o-user-select': 'none',
        '-khtml-user-select': 'none',
        '-webkit-user-select': 'none',
        '-ms-user-select': 'none',
        'user-select': 'none'
      }); 
 
      // Для Opera 
      jQuery(this).bind('mousedown', function() { return false; }); 
    }); 
  } 
});
На веб-странице вызываем его так:
Код
<script type="text/javascript">
jQuery(function(){
  jQuery('body *').disableSelection();
});
</script>
Когда нужно это подключать:
Многие веб-мастера предпочитают отключать функцию выделения и выделения текста, чтобы предотвратить несанкционированное копирование контента со своего веб-сайта. Однако нет надежного способа полностью отключить выделение текста.
Отключение выделения текста может работать для любительских скребков контента, но не мешает копированию HTML и программ автоматического копирования. Поэтому он имеет ограниченную выгоду по назначению.