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

Вопрос про dblclick и его стандартный внутренний обработчик
В body есть код:

<ul id="list">
    <li>Elem1</li>
    <li>Elem2</li>
 </ul>


В теге скрипт есть:
let ul = document.querySelector('#list');
    let lis = ul.getElementsByTagName("li");
    
    for (let i = 0; i < lis.length; i++) {
      let li = lis[i];
      
      li.addEventListener("dblclick", dblclickHandler);
    }
    
    function dblclickHandler(event) {
      event.preventDefault();
      event.stopImmediatePropagation();
    }


Как я понимаю, для события dblclick в документе браузер имеет свой внутренний стандартный обработчик на выделение текста при возникновении данного события. В моем коде я хочу отменить это выделение и для этого в своём обработчике события dblclick отменяю действие по умолчанию с помощью event.preventDefault(), прерываю все обработчики события dblclick для данного элемента и запрещаю всплытие с помощью event.stopImmediatePropagation(). Собственно вопрос, почему браузер все равно выделяет текст? Если поставить обработчик с командой event.preventDefault() на событие mousedown, то все будет работать корректно, только понять не могу почему. Может я чего-то не понимаю в технологии работы событий и их обработчиков? Заранее спасибо за ответ.

P.S. Тестировал в Chrome

Последний раз редактировалось BNB, 09.02.2018 в 16:42.
Ответить с цитированием