2011-11-26 14 views
5

DOMNodeInserted evento viene chiamato quando il nodo "essere aggiunto a" o "essere aggiunto"?quando viene chiamato l'evento "DOMNodeInserted"?

Lo chiedo perché il seguente codice:

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

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

e che:

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

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

Sia invocano OnNodeInserted in Chrome. E 'un errore?

risposta

9

Questo è da 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 

la chiave è il Bubbles: Sì - ecco perché il suo essere licenziato sul contenitore pure.

-1

Se si desidera impedire l'avvio dell'evento, utilizzare event.stopPropagation(); nel callback del nodo di testo. Gli eventi non sono più gestiti dall'albero del dom.

+0

'event.stopPropagation()' non sembra avere alcun effetto per me. L'evento sta ancora sparando per i bambini del bersaglio. Ho lavorato attorno ad esso controllando che 'event.target' è l'oggetto che penso sia. – devios1

Problemi correlati