Что в фф, что в хроме следующий код дает:
CODE ( javascript):
скопировать код в буфер обмена
document.addEventListener("keydown", a, true); function a(e){ console.log("Документ погружение"); } document.addEventListener("keydown", b, false); function b(e){ console.log("Документ всплытие"); } var body = document.getElementsByTagName('body')[0]; body.addEventListener("keydown", c, true); function c(e){ console.log("боди погружение"); } body.addEventListener("keydown", d, false); function d(e){ console.log("боди всплытие"); }
Дает такие результаты (будем считать, что <input> вложен в <div>, далее идет<body>, а потом document)
При фокусе на инпут и нажатии клавиши:
Здесь все по фен-шую.
При фокусе на <div>:
Почему события на Боди срабатывают в другом порядке?
(Добавление)
Сам спросил, сам ответ нашел
https://developer[dot]mozilla[dot]org/en[dot][dot][dot]addEventListener
Цитата:Note: For event listeners attached to the event target; the event is in the target phase, rather than capturing and bubbling phases. Events in the target phase will trigger all listeners on an element regardless of the useCapture parameter.
На целевом элементе (что вызвал срабатывание) функции вызываются без соблюдения порядка
|