Effizienteste Methode zum Erkennen / Überwachen von DOM-Änderungen?

Ich benötige einen effizienten Mechanismus zum Erkennen von Änderungen am DOM. Am liebsten browserübergreifend, aber wenn es irgendwelche effizienten Mittel gibt, die das sindnicht Cross-Browser kann ich mit einer ausfallsicheren Cross-Browser-Methode implementieren.

Insbesondere muss ich Änderungen erkennen, die sich auf den Text auf einer Seite auswirken. Daher sind neue, entfernte oder geänderte Elemente oder Änderungen am inneren Text (innerHTML) erforderlich.

Ich habe keine Kontrolle über die vorgenommenen Änderungen (möglicherweise aufgrund von Javascript-Einschlüssen von Drittanbietern usw.), daher kann dies nicht aus diesem Blickwinkel betrachtet werden. Ich muss die Änderungen irgendwie überwachen.

Derzeit habe ich eine "quick'n''dirty" -Methode implementiert, die prüftbody.innerHTML.length in Intervallen. Das erkennt natürlich keine Änderungen, die dazu führen, dass dieselbe Länge zurückgegeben wird, aber in diesem Fall ist es "gut genug" - die Wahrscheinlichkeit, dass dies geschieht, ist äußerst gering, und in diesem Projekt wird eine Änderung nicht erkannt, wenn sie nicht erkannt wird zu Datenverlust führen.

Das Problem mitbody.innerHTML.length ist, dass es teuer ist. Es kann zwischen 1 und 5 Millisekunden dauernschnell Ich habe es auch mit einer großen Anzahl von iframes zu tun und alles summiert sich. Ich bin mir ziemlich sicher, dass dies teuer ist, weil der innerHTML-Text von Browsern nicht statisch gespeichert wird und jedes Mal, wenn er gelesen wird, aus dem DOM berechnet werden muss.

Die Arten von Antworten, nach denen ich suche, reichen von "genau" (zum Beispiel Ereignis) bis zu "gut genug" - vielleicht etwas so "schnell" wie die Methode innerHTML.length, aber das wird schneller ausgeführt.

EDIT: Ich möchte auch darauf hinweisen, dass es zwar "schön" wäre, das genaue Element zu erkennen, das geändert wurde, aber keine absolute Notwendigkeit ist - nur die Tatsache, dass es solche gabirgendein Veränderung wäre gut genug. Hoffentlich erweitert dies die Reaktionen der Menschen. Ich werde Mutation Events untersuchen, aber ich brauche immer noch einen Fallback für den IE-Support, daher wären alle verrückten, kreativen Ideen, die außerhalb des Quadrats liegen, sehr willkommen.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage