Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.09.2013, 10:16
Новичок на форуме
Отправить личное сообщение для Grubergen Посмотреть профиль Найти все сообщения от Grubergen
 
Регистрация: 09.09.2013
Сообщений: 6

Частичное возвращение события после preventDefault
Привет всем!!

Столкнулся с необходимостью отменить выделение текста у всего документа. Сделал это так:
document.body.addEventListener('mousedown', function(e){ e.preventDefault(); });

Всё отлично отрабатывает, но нужно вернуть выделение для определённого DIV'a.

Могу ли я как-то это сделать в таких условиях??
Ответить с цитированием
  #2 (permalink)  
Старый 09.09.2013, 10:27
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от Grubergen
нужно вернуть выделение для определённого DIV'a
Вот статейка...
http://javascript.ru/tutorial/events...-sobytie-event
Ответить с цитированием
  #3 (permalink)  
Старый 09.09.2013, 12:06
Новичок на форуме
Отправить личное сообщение для Grubergen Посмотреть профиль Найти все сообщения от Grubergen
 
Регистрация: 09.09.2013
Сообщений: 6

Дак я читал, только там про то как и когда события происходят, про возвращение к стандартному поведению браузера не нашёл ни слова...
Хотелось бы лицезреть магию на подобие:
document.body.addEventListener('mousedown', function(e){ e.preventDefault(); });
document.getElementById('div_id').addEventListener('mousedown', function(e){ e.returnMeDefault(); });


Или может есть другой способ отмены выделения текста, отличный от preventDefault, в котором его можно вернуть для элемента??
Ответить с цитированием
  #4 (permalink)  
Старый 09.09.2013, 13:06
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

http://javascript.ru/tutorial/events...ovka-vsplytiya

Есть еще css3-свойство user-select.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 09.09.2013, 13:21
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от Grubergen Посмотреть сообщение
Дак я читал ...
Хотелось бы лицезреть магию на подобие:
document.body.addEventListener('mousedown', function(e){ e.preventDefault(); });
document.getElementById('div_id').addEventListener('mousedown', function(e){ e.returnMeDefault(); });
Знать неправильно читал...
Магия в том, что нужно в обработчике проверять на каком элементе такое сделано... И если элемент нужный не запрещать копирование.

Если же обработчиков несколько - останавливать всплытие на нужном элементе.
http://javascript.ru/tutorial/events...vaniya-sobytiy
Ответить с цитированием
  #6 (permalink)  
Старый 09.09.2013, 13:32
Новичок на форуме
Отправить личное сообщение для Grubergen Посмотреть профиль Найти все сообщения от Grubergen
 
Регистрация: 09.09.2013
Сообщений: 6

Похоже я туплю, оказывается всё так, как надо, но, начиная выделять внутри этого блока, событие отрабатывает и при выходе за его границы, браузер продолжает выделять всё остальное...

На ум приходит натянуть прозрачный блок поверх всего кроме div-a, натягиваю, под ним всё выделяется, в нём всё выделяется (у него прописал preventDefault, а с body убрал)... В общем либо ничего либо всё...
Ответить с цитированием
  #7 (permalink)  
Старый 09.09.2013, 13:55
Новичок на форуме
Отправить личное сообщение для Grubergen Посмотреть профиль Найти все сообщения от Grubergen
 
Регистрация: 09.09.2013
Сообщений: 6

Сообщение от danik.js
Есть еще css3-свойство user-select.
Было бы великолепно, но это кушает только webkit...
Ответить с цитированием
  #8 (permalink)  
Старый 09.09.2013, 14:18
Новичок на форуме
Отправить личное сообщение для Grubergen Посмотреть профиль Найти все сообщения от Grubergen
 
Регистрация: 09.09.2013
Сообщений: 6

Нет, Мозилла скушала. Спасибо за помощь!!
Ответить с цитированием
  #9 (permalink)  
Старый 09.09.2013, 14:58
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

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>

Но моя Опера выделяет все...
Ответить с цитированием
  #10 (permalink)  
Старый 09.09.2013, 15:25
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Для IE можно проставлять атрибут unselectable="on", но он не наследуется.
Для Оперы вообще ничего не работает, кроме preventDefault() либо getSelection().removeAllRanges() по первому mousemove.
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
После эмуляции события Click не работает отправка формы (IE 9) denic-nik Internet Explorer 4 01.08.2013 16:15
Google Chrome переставляет элементы после события onload w1cked Events/DOM/Window 2 25.12.2012 07:34
Выполнение проверки после наступления события juggalo Events/DOM/Window 6 06.10.2012 01:37
Обработка события после закрытия модального окна byaka Events/DOM/Window 3 11.08.2012 19:19
Как вызвать событие после события определенного в onchange Наталья Events/DOM/Window 2 12.09.2009 13:51