2011-09-11 10 views
8

Necesito interceptar cualquier cambio en el contenido de una celda dentro de mi página web.cómo interceptar los cambios innerHTML en javascript?

El siguiente código me muestra que addEventListener no funciona.

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"; 

El código es solo un ejemplo de juguete. En mi caso real, los cambios en la página (y por lo tanto también en la celda) están hechos por una aplicación web sobre la que NO tengo control.

+0

¿En qué tipo de navegador está probando esto? Recuerde que IE usa el método .attachEvent() no estándar. –

+2

¿Cómo están sucediendo los cambios en primer lugar? Cuando dices "una aplicación web", eso implica una aplicación del servidor que crea y devuelve el contenido de la página. Si ese es el caso, entonces el cambio no sería detectable por el código JavaScript porque el "cambio" tuvo lugar en el servidor antes de que el alcance del JavaScript fuera incluso aplicable. Desde la perspectiva del JavaScript en la página, no hubo cambios. – David

Respuesta

8

No puede escuchar un elemento DOM change de esa manera. change evento es principalmente para input s

Hay algunos otros nuevos eventos de DOM 3 que lo ayudarán en esto.

Aquí es cierta:

DOMCharacterDataModified // Proyecto de

DOMSubtreeModified

+0

desafortunadamente todos los eventos de mutación están en desuso! ¿hay algún otro evento mágico como DOMCharacterDataModified para escuchar los cambios de valores innerHTML? – Rafe

Cuestiones relacionadas