Почитайте этот ответ, в нём описано, какие CSS-свойства можно использовать для запрета выделения текста в современных браузерах.
Для некоторых старых версий IE и Opera, к которым не применим этот метод, может сработать атрибут unselectable:
<div id="foo" unselectable="on" class="unselectable"></div>
К сожалению, этот атрибут не распространяется на дочерние элементы, поэтому его необходимо назначать всем. Если это проблема, можно воспользоваться вот-такой функцией:
function makeUnselectable(node) { if (node.nodeType == 1) { node.unselectable = true; } var child = node.firstChild; while (child) { makeUnselectable(child); child = child.nextSibling; } } // Использование: makeUnselectable(document.getElementById("foo"));
Она сработает рекурсивно для всех дочерних элементов foo.
Если применять JavaScript, можно воспользоваться следующей функцией:
function disableSelection(target){ if (typeof target.onselectstart!="undefined") // для IE: target.onselectstart=function(){return false} else if (typeof target.style.MozUserSelect!="undefined") //для Firefox: target.style.MozUserSelect="none" else // для всех других (типа Оперы): target.onmousedown=function(){return false} target.style.cursor = "default" }
Примеры использования.
Запретим выделение текста во всем документе:
disableSelection(document.body);
Или же только в DIV-е с id которого равно ‘mydiv’:
disableSelection(document.getElementById("mydiv"));