Частичное возвращение события после preventDefault
Привет всем!!
Столкнулся с необходимостью отменить выделение текста у всего документа. Сделал это так:
document.body.addEventListener('mousedown', function(e){ e.preventDefault(); });
Всё отлично отрабатывает, но нужно вернуть выделение для определённого DIV'a. Могу ли я как-то это сделать в таких условиях?? |
Цитата:
http://javascript.ru/tutorial/events...-sobytie-event |
Дак я читал, только там про то как и когда события происходят, про возвращение к стандартному поведению браузера не нашёл ни слова...
Хотелось бы лицезреть магию на подобие:
document.body.addEventListener('mousedown', function(e){ e.preventDefault(); });
document.getElementById('div_id').addEventListener('mousedown', function(e){ e.returnMeDefault(); });
Или может есть другой способ отмены выделения текста, отличный от preventDefault, в котором его можно вернуть для элемента?? |
|
Цитата:
Магия в том, что нужно в обработчике проверять на каком элементе такое сделано... И если элемент нужный не запрещать копирование. Если же обработчиков несколько - останавливать всплытие на нужном элементе. http://javascript.ru/tutorial/events...vaniya-sobytiy |
Похоже я туплю, оказывается всё так, как надо, но, начиная выделять внутри этого блока, событие отрабатывает и при выходе за его границы, браузер продолжает выделять всё остальное...
На ум приходит натянуть прозрачный блок поверх всего кроме div-a, натягиваю, под ним всё выделяется, в нём всё выделяется (у него прописал preventDefault, а с body убрал)... В общем либо ничего либо всё... |
Цитата:
|
Нет, Мозилла скушала. Спасибо за помощь!! :)
|
Grubergen, там нужно "комбинировано" писать
<!DOCTYPE html>
<html>
<head>
<title>user-select</title>
<style type="text/css">
body {
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
}
.enable {
-webkit-user-select: text;
-moz-user-select: text;
user-select: text;
}
</style>
</head>
<body>
<p>Этот текст нельзя выделить</p>
<p><input type="text" value="Этот текст можно выделить" /></p>
<p class="enable">Этот <b>текст</b> тоже можно выделить</p>
</body>
</html>
Но моя Опера выделяет все... |
Для IE можно проставлять атрибут unselectable="on", но он не наследуется.
Для Оперы вообще ничего не работает, кроме preventDefault() либо getSelection().removeAllRanges() по первому mousemove. |
| Часовой пояс GMT +3, время: 01:44. |