Что указывает третий параметр (false) в
document.addEventListener("deviceready",OnDeviceReady,false);
Можно ли показать пример script, чтобы показать разницу
Что указывает третий параметр (false) в
document.addEventListener("deviceready",OnDeviceReady,false);
Можно ли показать пример script, чтобы показать разницу
Это useCapture:
Если
true
,useCapture
указывает, что пользователь желает инициировать захват. После запуска захват, все события указанного тип будет отправлен на зарегистрированlistener
, прежде чем отправлен на любойEventTarget
ниже это в дереве DOM. События, которые пузырь вверх по дереву будет не запускать слушателя, назначенного для использовать захват. См. События DOM уровня 3для подробного объяснения.
Это по историческим причинам. Когда система событий браузера была впервые разработана, существовали два противоречивых способа моделирования того, как она работает. Они назывались захватом событий и пузырьками событий.
Возьмем, к примеру, этот 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
был явным, поэтому он обычно предоставляется для обратной совместимости.