Проблема с фазой перехвата в addEventListener, вопрос для профи
Повторюсь, не работает именно перехват события, вместо него происходит всплытие.
Для примера, есть такой упрощенный код: var cont = document.querySelector('.cont'), btn = document.querySelector('.btn'); init();//return 3 cont.addEventListener('DOMSubtreeModified', init, true); btn.onclick = function(){ var div = document.createElement('div'); cont.appendChild(div); } function init(){ alert(cont.children.length); } Проблема в том, что при клике, вначале перестраивается дерево, только после выполняется функция init(). Таким образом, init() после клика возвращает 4. Кнопка с контейнером находятся на одном уровне (соседи), может быть проблема в этом? Но было бы странным, так как перехватывается именно изменение дерева контейнера, а не клик кнопки. Chrome 24.0 В чем дело не пойму, может я на чем ошибся? Заранее признателен. |
А при чем тут фаза перехвата? DOMSubtreeModified возникает после изменения DOM-а, когда ваш div уже добавлен. У кого вы перехватить событие пытаетесь, у вас же всего один обработчик установлен.
К слову DOMSubtreeModified устарел, используйте MutationObserver |
Часовой пояс GMT +3, время: 03:09. |