когда вызывается событие "DOMNodeInserted"? - PullRequest
5 голосов
/ 26 ноября 2011

DOMNodeInserted событие вызывается, когда узел «добавляется» или «добавляется»?

Я спрашиваю это, потому что следующий код:

function AddTextToContainer () {
    var textNode = document.createTextNode ("My text");
    var container = document.getElementById ("container");

    if (container.addEventListener) {
        container.addEventListener ('DOMNodeInserted', OnNodeInserted, false);
    }
    container.appendChild (textNode);
}

и это:

function AddTextToContainer () {
   var textNode = document.createTextNode ("My text");
   var container = document.getElementById ("container");

   if (textNode.addEventListener) {
       textNode.addEventListener ('DOMNodeInserted', OnNodeInserted, false);
   }
   container.appendChild (textNode);
}

Оба вызывают OnNodeInserted в Chrome. Это ошибка?

Ответы [ 2 ]

9 голосов
/ 26 ноября 2011

Это от W3C

DOMNodeInserted
Fired when a node has been added as a child of another node. 
This event is dispatched after the insertion has taken place. 
The target of this event is the node being inserted.
Bubbles: Yes
Cancelable: No
Context Info: relatedNode holds the parent node

Ключ - Bubbles: Да - поэтому он также запускается в контейнер.

0 голосов
/ 26 ноября 2011

Если вы хотите предотвратить всплывание события, просто используйте event.stopPropagation (); в вашем текстовом узле обратного вызова. События больше не обрабатываются в дереве dom.

...