Сделать весь текст за исключением <input>недоступным для выбора в Internet Explorer? - PullRequest
4 голосов
/ 16 ноября 2011

У меня есть веб-сайт, на котором я хочу запретить пользователям выбирать контент, КРОМЕ для областей ввода. В настоящее время у меня есть некоторые CSS, чтобы отключить выбор пользователя:

-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-o-user-select: none;
user-select: none;

Однако это НЕ распространяется на Internet Explorer; таким образом, мне нужно реализовать JavaScript:

<body onselectstart="return false;">

С помощью CSS и JavaScript я могу сделать весь контент недоступным для выбора во всех популярных браузерах. НО, этот код также делает области невыбираемыми, что является основным случаем плохого удобства использования. Я использую CSS для выбора областей ввода:

-webkit-user-select: text;
-khtml-user-select: text;
-moz-user-select: text;
-o-user-select: text; 
user-select: text;

.. и, как вы могли ожидать, это не распространяется на Internet Explorer, поскольку я использовал JavaScript, чтобы отключить выбор всего контента.

Что можно сделать, чтобы сделать все содержимое невыбираемым, кроме областей ввода?

Ответы [ 3 ]

2 голосов
/ 16 ноября 2011

Поскольку событие пузырится до тела и не возникает там, я думаю, что вы можете проверить имя узла для фактического целевого узла и избежать возврата false для событий, происходящих на определенных узлах:

<body onselectstart="if ((event.target || event.srcElement).nodeName !== 'INPUT') return false;">
2 голосов
/ 16 ноября 2011

Попробуйте это: oncontextmenu = "return false;"

Поместите это в тег тела, затем используйте что-то вроде:

e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();

в функции JavaScript для элементов ввода, которые вы хотите выбрать. Это должно остановить распространение события, которое вызовет тег body.

0 голосов
/ 16 ноября 2011

Вы можете добавить собственный атрибут IE unselectable="on" к любому элементу, который вы хотите сделать невыбираемым в IE:

<p unselectable="on">I don't want IE users to easily select this text 
  for some reason.</p>

См. Как сделать вещи невыбираемыми в IE для более подробнойобъяснение.

Если вы делаете это из JavaScript, обязательно используйте el.setAttribute("unselectable","on").Простое использование el.unselectable="on" не сработает.

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