2010-09-19 15 views

Antwort

6

Wenn Sie Änderungen erkennen müssen, können Sie die DOM-Mutationsereignisse überprüfen. Die DOM events wikipedia page listet sie alle auf. Sie sollten jedoch wissen, dass sie in Internet Explorer nicht unterstützt werden und in den Browsern, die sie unterstützen, zu häufig ausgelöst werden. Ein Brute-Force-Ansatz besteht darin, setTimeout zu verwenden und selbst nach Änderungen zu suchen.

Meine Erfahrung zeigt jedoch, dass die Notwendigkeit für DOM-Änderungsbenachrichtigungen vermieden werden kann. Können Sie nähere Angaben zu Ihren genauen Anforderungen machen?

+0

Ich möchte Benutzer die Farbe eines Elements auf der Seite ändern lassen, indem Sie auf das Element klicken. Wenn der Klickpunkt bekannt ist, möchte ich das DOM nach allen Elementen durchsuchen, die sich am Klickpunkt befinden, und den Benutzer entscheiden lassen, welches Element er die Farbe ändern möchte. Da Elemente auf dieser Seite hinzugefügt und entfernt werden können, sieht es so aus, als müsste ich das DOM bei jedem Klick scannen. Ich dachte, alle DOM-Elemente in einer Variablen zwischenzuspeichern und diese Variable zu ändern, wenn sich das DOM ändert. –

+0

@MishaMoroshko AFAIK Sie können event.target verwenden, um zu wissen, auf welchen Knoten geklickt wurde. So können Sie das Ereignis an das 'documentElement' selbst anhängen. –

4

Sie können an viele DOM-Ereignisse anhängen, abhängig von der Art der Änderung, auf die Sie achten möchten. Hier ist eine Seite mit allen DOM Änderungsereignisse:

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

Die generische, catch-all DOM Änderungsereignis DOMSubtreeModified ist. Zum Beispiel:

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

Es gibt kein integriertes Ereignis für dieses, das leider häufig unterstützt wird. Sie können jedoch ein jQuery-Plugin namens livequery verwenden.

+0

Sie sind großartig, werden aber nicht richtig unterstützt. Ich würde mir lieber die Mühe ersparen und ein getestetes Plugin verwenden. –

+0

Die Verwendung von Bibliotheken hemmt die Nachfrage nach der Entwicklung von Standards und hemmt den Benutzerfluss von z. Internet Explorer. –

+4

@Delan Dies sind sehr falsche Annahmen - Javascript Bibliotheken abstrahiert Unterschiede in der Browser-Implementierung des DOM und helfen, eine Basislinie zu erstellen, mit der es möglich ist, weiter zu entwickeln, anstatt Zeit damit zu verbringen, Cross-Browser-Kompatibilitätsprobleme auszubügeln. Wenn Sie Ihre Website auf IE aufbrechen, werden Sie nicht daran gehindert, dass Menschen sich von IE entfernen, sondern nur von Leuten, die Ihre Website besuchen, und niemandem wird geholfen. –

Verwandte Themen