2010-03-24 15 views
7

Ci sono dei modi pratici per sapere quale parte del DOM è stata modificata se si sa che sarà modificata?è possibile sapere se il DOM è stato modificato e quale parte?

Sto scrivendo un plug-in che verrà eseguito insieme a javascript che non ho scritto. un evento verrà attivato prima che il DOM venga modificato e un evento verrà attivato dopo la modifica. Il mio lavoro è decidere cosa è stato cambiato. è possibile, e se sì qual è il modo meno orribile per farlo?

+0

questa è una domanda interessante. Non è un buon modo, né un modo decente. La mia prima idea era di fare una copia di tutti gli oggetti dom nel tuo evento "before change", e poi nel tuo evento "after change" fai un confronto degli attuali oggetti dom con ciò che hai fatto una copia di. Questa opzione è plausibile se si dispone di un elenco noto di oggetti dom che potrebbero essere modificati e si dispone di un numero limitato di modifiche che si prevedono. Anche se, questa è una brutta soluzione e non la consiglierei, ma è la prima cosa che mi viene in mente. – Jay

+1

Si potrebbe scrivere un codice che calcoli un valore hash aggregato del DOM secondario in ciascun nodo (in base a ciò che interessa nel DOM). È importante che l'hash di ciascun nodo sia una funzione del nodo * e * della sottostruttura. Quindi puoi tenere traccia delle modifiche controllando per prima cosa se i codici hash sono cambiati. – Pointy

+0

Grazie per le risposte. – mkoryak

risposta

0

Ciò non è possibile in alcun modo pratica

+0

È possibile con eventi di mutazione DOM in tutti i principali browser tranne IE <= 8. –

1

Una possibilità, se si conosce quale aspetto degli elementi DOM devono essere modificati, è quello di memorizzare il valore di tale attributo in un nodo .data() per ogni elemento sul caricamento della pagina, quindi confrontare dopo lo script viene eseguito .

0

Si potrebbe anche eseguire un hash del testo della pagina (ad esempio, completa la stringa di origine) e confrontarlo (sulla modifica) con l'hash corrente.

0

Con jquery è possibile attivare: filtro animato per cercare gli elementi animati, non so se si avrà così tanto ritardo tra questo tipo di eventi, ma se il trigger principale sulla trasformazione iniziale viene attivato proprio quando la trasformazione è attivata avviato si potrebbe provare a catturare: elemento animato e catturare lo stato iniziale prima di terminare l'animazione, quindi sullo stato di acquisizione e confrontare, è solo un suggerimento non ho alcuna dimostrazione o modo di riprodurre il tuo ambiente di lavoro ma spero che questa linea guida possa dare sei un'idea.

Problemi correlati