2010-03-24 21 views
7

¿Hay alguna forma práctica de decir qué parte del DOM se modificó si sabe que se modificará?¿es posible decir si DOM fue modificado, y qué parte?

Estoy escribiendo un complemento que se ejecutará junto con Javascript que no escribí. se desencadenará un evento antes de que se modifique DOM, y se desencadenará un evento después de la modificación. Es mi trabajo decidir qué fue cambiado. es esto posible, y si es así, ¿cuál es la forma menos horrible de hacer esto?

+0

esta es una pregunta interesante. No es una buena manera, ni una buena manera. Mi primera idea fue hacer una copia de todos los objetos dom en el evento "antes del cambio" y luego en el evento "después del cambio" hacer una comparación de los objetos dom actuales con los que había hecho una copia. Esta opción es plausible si tiene una lista conocida de objetos dom que podría modificarse, y tiene un número limitado de cambios que espera. Incluso si, esta es una solución fea y no lo recomendaría, pero es lo primero que se me viene a la mente. – Jay

+1

Puede escribir código que calcule un valor hash agregado del sub-DOM en cada nodo (según lo que le interese en el DOM). Es importante que el hash en cada nodo sea una función del nodo * y * del subárbol. Luego puede hacer un seguimiento de los cambios al verificar primero si los códigos hash han cambiado. – Pointy

+0

Gracias por las respuestas. – mkoryak

Respuesta

0

esto no es posible de ninguna manera práctica

+0

Es posible con eventos de mutación DOM en todos los navegadores principales excepto IE <= 8. –

1

Una posibilidad, si sabe qué aspecto de los elementos DOM se modificará, es almacenar el valor de ese atributo en un nodo .data() para cada elemento en la carga de la página, luego comparar después de ejecutar el script .

0

También podría hacer un hash del texto de la página (por ejemplo, cadena fuente completa) y compararlo (en el cambio) con el hash actual.

0

Con jquery puede activar: filtro animado para buscar los elementos que se están animando, no sé si tendrá tanto retraso entre este tipo de eventos, pero si se desencadena el activador principal en la transformación inicial solo cuando la transformación es iniciado podría intentar capturar: elemento animado y capturar el estado inicial antes de finalizar la animación, luego en estado de captura final y comparar, es solo una pista, no tengo ninguna demostración o forma de reproducir su entorno de trabajo, pero espero que esta guía pueda dar tienes una idea.

Cuestiones relacionadas