Часто тексты со страниц по-просту воруют и публикуют на своем сайте, причем не проставляя ссылки на источник.
Можно отключать выделение текста для любого блока, например, для определенного div'а. Если поставить данный код для тега body, будет запрещено выделение всей страницы
В блок, в котором мы хотим запретить выделение текста необходимо добавить обработчик для javascript (используется для браузеров Internet Explorer)
onselectstart="return false"
и css-стили (используется для браузеров FireFox (на движке gecko), Safari (на движке KHTML))
-moz-user-select: none; //Firefox -khtml-user-select: none; //Safari user-select: none; //работает в css3
Для Браузера Opera необходимо писать дополнительную функцию preventSelection(); (листинг функции ниже)
Функция запрещает выделение во всем документе, кроме элементов input и textarea
Вызвать данную функцию
preventSelection(document);
Однако текст можно с легкостью скопировать, всего лишь заглянув в исходный html-код страницы
Такой способ может помочь в защите текстов от людей, но никак не поможет от роботов (программ, которые скачивают страницы целиком)
<div onselectstart="return false" style="-moz-user-select: none">Попробуйте выделить текст этой строки</div>
Вот, что получилось
Код функции
function preventSelection(element){ var preventSelection = false; function addHandler(element, event, handler){ if (element.attachEvent) element.attachEvent('on' + event, handler); else if (element.addEventListener) element.addEventListener(event, handler, false); } function removeSelection(){ if (window.getSelection) { window.getSelection().removeAllRanges(); } else if (document.selection && document.selection.clear) document.selection.clear(); } function killCtrlA(event){ var event = event || window.event; var sender = event.target || event.srcElement; if (sender.tagName.match(/INPUT|TEXTAREA/i)) return; var key = event.keyCode || event.which; if (event.ctrlKey && key == 'A'.charCodeAt(0)) // 'A'.charCodeAt(0) можно заменить на 65 { removeSelection(); if (event.preventDefault) event.preventDefault(); else event.returnValue = false; } } // не даем выделять текст мышкой addHandler(element, 'mousemove', function(){ if(preventSelection) removeSelection(); }); addHandler(element, 'mousedown', function(event){ var event = event || window.event; var sender = event.target || event.srcElement; preventSelection = !sender.tagName.match(/INPUT|TEXTAREA/i); }); // борем dblclick // если вешать функцию не на событие dblclick, можно избежать // временное выделение текста в некоторых браузерах addHandler(element, 'mouseup', function(){ if (preventSelection) removeSelection(); preventSelection = false; }); // борем ctrl+A // скорей всего это и не надо, к тому же есть подозрение // что в случае все же такой необходимости функцию нужно // вешать один раз и на document, а не на элемент addHandler(element, 'keydown', killCtrlA); addHandler(element, 'keyup', killCtrlA); }
;-)
Кросс-пост в dizigner.com: Отключаем выделение текста
Также использовались материалы с Хабра
Постоянные ссылки
При копировании ссылка на TeaM RSN обязательна!