как заблокировать выделение текста без ввода текстовой области и выбрать элементы - PullRequest
3 голосов
/ 11 января 2011

Как заблокировать выделение текста без ввода textarea и выбрать элементы У меня действительно есть скрипт, который работает в IE, но не в других браузерах, вот он:

 var omitformtags=["input", "textarea", "select"]
 omitformtags=omitformtags.join("|")
 function disableselect(e){
  if (omitformtags.indexOf(e.target.tagName.toLowerCase())==-1)
   return false
  }
 function reEnable(){
   return true
  }

 if (typeof document.onselectstart!="undefined")
  document.onselectstart=new Function ("return false")
 else{
  document.onmousedown=disableselect
  document.onmouseup=reEnable
 }
  document.onmousedown=click;
  function click()
 {
  if ((event.button==2) || (event.button==3)) { alert("Yazı Kopyalayamazsınız!");}

 }

Мне нужно работать так жев других браузерах должен быть готовый скрипт, просто не могу найти в сети ..

Ответы [ 2 ]

4 голосов
/ 11 января 2011
<div onmousedown='return false;' onselectstart='return false;'></div>

onmousedown отключает выбор для Firefox, Safari, Opera, Chrome и большинства других веб-браузеров, onselectstart для IE.

Хотя отключение выделения текста и контекстных меню очень плохой стиль и не мешает про-пользователям выбирать ваш текст. Простое отключение JavaScript в их браузерах позволяет снова сделать выбор.

2 голосов
/ 11 января 2011

Обновлен мой ответ, чтобы быть более ясным :

браузеры могут отключить выбор, используя стили CSS или используя специальный атрибут элемента. Этот способ лучше:

  • нет сценария для поддержки
  • не бойтесь, что пользователь отключит скрипт и скопирует контент, который ему нужен
  • элегантное решение

Opera и IE игнорируют такой стиль, но есть атрибут элемента html, который нельзя выбрать, что запрещает выбор. Попробуйте следующую страницу (я тестировал в IE8, FF3.6, Safari5, opera11, Chrome8):

<html>

<head>

<style>

.unselectable {
    -moz-user-select: none; /* for FireFox */
    -webkit-user-select: none; /* for Chrome and Safari */
    -khtml-user-select: none; /* probably old webkit browsers, but new support it too */
    user-select: none; /* for future CSS3 compliant browsers */
}

</style>

</head>

<body>

<!-- add unselectable class to deny selecting in FF, Chrome, Safari and CSS3 compliant browsers -->
<!-- add unselectable attribute to deny selecting in Opera and IE -->
<div class="unselectable" unselectable="on">test</div>

</body>

</html>

Для получения дополнительной информации об этом посетите эту страницу . Теперь вы можете выбрать лучший для вас вариант использования / mantain. Еще раз - это решение вообще не нуждается в javascript и должно быть более безопасным (если вы можете редактировать html \ css страницы и не нуждаетесь в динамическом. В противном случае вы можете попробовать добавить атрибут css class \ element через javascript ..)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...