2010-09-19 21 views

Respuesta

6

Si debe detectar cambios, puede verificar los eventos de mutación DOM. El DOM events wikipedia page los enumera a todos. Sin embargo, debe saber que no son compatibles con Internet Explorer y que pueden activarse con demasiada frecuencia en los navegadores que los admiten. Un enfoque de fuerza bruta es usar setTimeout y verificar los cambios usted mismo.

Mi experiencia demuestra que se puede evitar la necesidad de notificaciones de cambio DOM. ¿Podría dar más detalles sobre sus requisitos exactos?

+0

Quiero permitir al usuario cambiar el color de cualquier elemento en la página haciendo clic en el elemento. Cuando se conoce el punto de clic, quiero escanear el DOM para todos los elementos que residen en el punto de clic, y dejar que el usuario decida qué elemento quiere cambiar el color. Dado que los elementos se pueden agregar y eliminar en esta página, parece que debo escanear el DOM en cada clic. Pensé guardar en caché todos los elementos DOM en una variable y cambiar esta variable cuando cambia el DOM. –

+0

@MishaMoroshko AFAIK puede usar event.target para saber en qué nodo se ha hecho clic. Entonces puede adjuntar el evento al 'documentElement' en sí mismo. –

4

Puede adjuntar a muchos eventos DOM según el tipo de cambio que desee escuchar. Aquí hay una página con todos los eventos de cambio de DOM:

https://developer.mozilla.org/en/DOM_Events

El genérico, recolecta todo evento de cambio de DOM es DOMSubtreeModified. Por ejemplo:

document.getElementById('abc').addEventListener('DOMSubtreeModified', f, false); 
2

Desafortunadamente no hay un evento incorporado para esto que sea ampliamente compatible. Puede usar un plugin de jQuery llamado livequery.

+0

Son geniales pero no son compatibles. Prefiero ahorrarme el problema y usar un plugin probado. –

+0

El uso de bibliotecas inhibe la demanda de desarrollo de estándares, así como frenar el flujo de usuarios fuera de, p. Explorador de Internet. –

+4

@Delan Estas suposiciones son muy erróneas: las bibliotecas Javascript resuelven las diferencias en la implementación del DOM por parte del navegador y ayudan a crear una línea de base con la cual es posible desarrollarse, en lugar de perder tiempo resolviendo problemas de compatibilidad entre navegadores. Romper tu sitio en IE no evitará que las personas se alejen de IE, solo las personas visiten tu sitio, y no ayudará a nadie. –

Cuestiones relacionadas