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


этот вопрос уже есть ответ здесь:

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

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

может ли кто-нибудь показать пример сценария, чтобы показать разницу

2 66

2 ответа:

это useCapture:

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

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

возьмите, например, этот HTML:

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

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

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

  • html
  • body
  • a

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

  • a
  • body
  • html

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

  • html (фаза захвата)
  • body (фаза захвата)
  • a (фаза захвата)
  • a (пузырящейся фазы)
  • body (фаза буббинга)
  • html (пузырящейся фазы)

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

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

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