Частичное возвращение события после 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, время: 17:42. |