2011-09-11 20 views
8

Ho bisogno di intercettare eventuali cambiamenti nel contenuto di una cella all'interno della mia pagina web.come intercettare le modifiche innerHTML in javascript?

Il seguente codice mostra che addEventListener non funziona.

function modifyText() { 
alert("!"); 
} 

var el=document.getElementById("mycell"); 
el.innerHTML="a" 
el.addEventListener("change", modifyText, false); 
// After next instruction I expect an alert message but it does not appear... 
el.innerHTML="Z"; 

Il codice è solo un esempio di giocattolo. Nel mio caso reale i cambiamenti nella pagina (e quindi anche nella cella) sono fatti da una webapp di cui NON ho controllo.

+0

Quale tipo di browser stai testando? Ricorda che IE utilizza il metodo .attachEvent() non standard. –

+2

Come stanno avvenendo i cambiamenti in primo luogo? Quando dici "un'app web" che mi implica un'applicazione lato server che costruisce e restituisce il contenuto della pagina. In tal caso, la modifica non sarebbe rilevabile dal codice JavaScript poiché la "modifica" avveniva sul server prima che l'ambito del JavaScript fosse applicabile. Dal punto di vista del JavaScript sulla pagina, non ci sono stati cambiamenti. – David

risposta

8

In questo modo non è possibile ascoltare un elemento DOM change. change evento è per lo più per input s

c'è qualche altro nuovo DOM 3 eventi che vi aiutano in questo.

Ecco alcuni:

DOMCharacterDataModified // Progetto

DOMSubtreeModified

+0

sfortunatamente tutti gli eventi di mutazione sono deprecati! c'è qualche altro evento magico come DOMCharacterDataModified per ascoltare le modifiche del valore innerHTML? – Rafe

Problemi correlati