Подтвердить что ты не робот

Что указывает третий параметр (false) в документе document.addEventListener( "deviceready", OnDeviceReady, false);

Что указывает третий параметр (false) в

document.addEventListener("deviceready",OnDeviceReady,false);

Можно ли показать пример script, чтобы показать разницу

4b9b3361

Ответ 1

Это useCapture:

Если true, useCapture указывает, что пользователь желает инициировать захват. После запуска захват, все события указанного тип будет отправлен на зарегистрирован listener, прежде чем отправлен на любой EventTarget ниже это в дереве DOM. События, которые пузырь вверх по дереву будет не запускать слушателя, назначенного для использовать захват. См. События DOM уровня 3для подробного объяснения.

Ответ 2

Это по историческим причинам. Когда система событий браузера была впервые разработана, существовали два противоречивых способа моделирования того, как она работает. Они назывались захватом событий и пузырьками событий.

Возьмем, к примеру, этот HTML:

<html>
    <body>
        <a href="#">Content</a>
    </body>
</html>

Если событие (например, щелчок) происходит в элементе a, должны ли знать элементы предка? Широко признавалось, что они должны. Но вопрос в том, в каком порядке их следует уведомлять. Разработчики Microsoft и Netscape (это должно дать вам представление о том, насколько исторически мы говорим!) Имели разные мнения.

Одна из моделей - это захват событий (защищаемый разработчиками Netscape). Сначала он уведомил элемент html и проложил путь вниз по дереву:

  • html
  • body
  • a

Другая модель - событие пузыря (защищено разработчиками Microsoft). Сначала он уведомлял целевой элемент и прокладывал путь к дереву:

  • a
  • body
  • html

Возможный компромисс в том, что он должен делать оба.

  • html (фаза захвата)
  • body (фаза захвата)
  • a (фаза захвата)
  • a (фаза барботирования)
  • body (фаза пузырьков)
  • html (фаза барботирования)

Итак, событие пробивается вниз по дереву, а затем снова создает резервную копию.

Это длинный способ добраться до addEventListener. addEventListener прослушивает как фазу захвата, так и события фазы пузырьков. Третий параметр (называемый useCapture в спецификации) позволяет программисту указать, какую фазу они хотят использовать.

В современных браузерах по умолчанию используется false. Вероятно, вы никогда не столкнетесь с ситуацией, когда вы хотите использовать этап захвата, тем более, что Internet Explorer по-прежнему не поддерживает его. Но для старых браузеров нужно, чтобы false был явным, поэтому он обычно предоставляется для обратной совместимости.