Часто тексты со страниц по-просту воруют и публикуют на своем сайте, причем не проставляя ссылки на источник.
Можно отключать выделение текста для любого блока, например, для определенного 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 обязательна!

URI

Html (ЖЖ)

BB-код (Для форумов)