MutationObserver – Überwachen von DOM-Änderungen in HTML-Dokumenten

Was ist Mutationsbeobachter?

Mutation Observer ist ein eingebautes Objekt, das auf Änderungen im DOM-Baum achtet und eine Callback-Funktion aufruft oder auslöst, um auf die Änderungen im DOM zu reagieren. Die Beobachtung von Änderungen im DOM-Baum ist für komplexe Webanwendungen und Frameworks regelmäßig notwendig. Mit dem Mutation Observer können Sie Änderungen an bestimmten Knoten, Attributen oder untergeordneten Elementen eines Dokuments überwachen und benutzerdefinierte Funktionen als Reaktion auf diese Änderungen ausführen.

In der Aspose.HTML for .NET-Bibliothek ist mit MutationObserver ein Mechanismus zur Beobachtung von Dokumenten vorhanden, der in hohem Maße konfigurierbar ist und es ermöglicht, über alle Änderungen im Dokumentenbaum benachrichtigt zu werden. Dieser Artikel zeigt anhand von C#-Beispielen, wie Sie die Klasse MutationObserver verwenden können, um Änderungen im DOM zu beobachten.

Wie man Mutation Observer verwendet

Mutation Observer bietet die Möglichkeit, Änderungen im DOM-Baum einer Webseite zu beobachten. Das folgende Beispiel demonstriert die Implementierung von MutationObserver und wie man damit das Hinzufügen neuer Knoten zum Dokument beobachten kann:

  1. Erstellen Sie eine neue Instanz der Klasse HTMLDocument mit dem Konstruktor HTMLDocument(). Diese Klasse repräsentiert ein HTML-Dokument im Speicher, das geparst und verändert werden kann.
  2. Erstellen Sie ein neues MutationObserver-Objekt mit Hilfe des MutationObserver(callback) Konstruktors. Die Funktion callback nimmt mutations (eine Liste von MutationRecord Objekten) und mutationObserver (das MutationObserver Objekt, das die Mutationen entdeckt hat) als Parameter.
  3. Verwenden Sie den MutationObserverInit() Konstruktor, um ein MutationObserverInit Objekt zu erstellen, um die Optionen für den MutationObserver zu konfigurieren. Mit anderen Worten, Sie können angeben, welche Art von Änderungen erkannt werden sollen. In diesem Beispiel werden die Eigenschaften ChildList, Subtree und CharacterData auf true gesetzt:
    • ChildList erkennt Änderungen in den direkten Kindern von targetNode.
    • Subtree erkennt Änderungen in allen Nachkommen des Knotens.
    • CharacterData wird verwendet, um die Änderungen im Textinhalt zu beobachten.
  4. Rufen Sie die Methode Observe(target, options) auf, um die DOM-Änderungen zu beobachten. Diese Methode nimmt den document.Body als den zu beobachtenden Target-Knoten und das config-Objekt als die options für die Beobachtung.
  5. Bearbeiten Sie das HTML-Dokument:
  1. Sobald eine Änderung im DOM-Baum eintritt, wie z.B. das Hinzufügen des <p>-Elements und des Textknotens in diesem Fall, wird die MutationObserver-Funktion callback ausgelöst und gibt eine Meldung auf der Konsole aus, die angibt, welcher Knoten dem Dokument hinzugefügt wurde.

Wenn Sie einen Knoten auf Änderungen beobachten, wird Ihr Callback erst ausgelöst, wenn sich das DOM vollständig geändert hat. Dieses Verhalten wurde entwickelt, um die DOM Mutation Events zu ersetzen und das Leistungsproblem der vorherigen Spezifikation zu reduzieren.

 1// Use Mutation Observer to watch for new nodes added to a document with C#
 2
 3// Create an empty HTML document
 4using (HTMLDocument document = new HTMLDocument())
 5{
 6    // Create a mutation observer instance
 7    Html.Dom.Mutations.MutationObserver observer = new Html.Dom.Mutations.MutationObserver((mutations, mutationObserver) =>
 8    {
 9        foreach (MutationRecord record in mutations)
10        {
11            foreach (Node node in record.AddedNodes)
12            {
13                Console.WriteLine("The '" + node + "' node was added to the document.");
14            }
15        }
16    });
17
18    // Configuration of the observer
19    MutationObserverInit config = new Html.Dom.Mutations.MutationObserverInit
20    {
21        ChildList = true,
22        Subtree = true,
23        CharacterData = true
24    };
25
26    // Pass in the target node to observe with the specified configuration
27    observer.Observe(document.Body, config);
28
29    // Now, we are going to modify DOM tree to check
30    // Create a paragraph element and append it to the document body
31    Element p = document.CreateElement("p");
32    document.Body.AppendChild(p);
33
34    // Create a text and append it to the paragraph
35    Text text = document.CreateTextNode("Hello, World");
36    p.AppendChild(text);
37
38    Console.WriteLine("Waiting for mutation. Press any key to continue...");
39    Output.ToString();
40}

Aspose.HTML bietet HTML-Webanwendungen, eine Online-Sammlung von kostenlosen Konvertern, Zusammenführungen, SEO-Tools, HTML-Code-Generatoren, URL-Tools und mehr. Die Anwendungen funktionieren auf jedem Betriebssystem mit einem Webbrowser und erfordern keine zusätzliche Softwareinstallation. Konvertieren, fusionieren, kodieren, generieren Sie HTML-Code, extrahieren Sie Daten aus dem Web oder analysieren Sie Webseiten im Hinblick auf SEO, wo immer Sie sind. Nutzen Sie unsere Sammlung von HTML-Webanwendungen, um Ihre täglichen Aufgaben zu erledigen und Ihren Arbeitsablauf nahtlos zu gestalten!

Text “HTML-Webanwendungen”

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.