Почитайте этот ответ, в нём описано, какие 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"));