Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Mutation Observer – это встроенный объект, который отслеживает изменения дерева DOM и вызывает или запускает функцию обратного вызова, чтобы реагировать на изменения в DOM. Отслеживание изменений в дереве DOM периодически необходимо для сложных веб-приложений и фреймворков. С помощью Mutation Observer вы можете отслеживать изменения в определенных узлах, атрибутах или дочерних элементах документа и выполнять пользовательские функции, реагирующие на эти изменения.
В библиотеке Aspose.HTML for .NET механизм наблюдения за документом представлен с помощью MutationObserver, который дает возможность получать уведомления о любых изменениях в дереве документов. В этой статье на примерах C# показано, как можно использовать класс MutationObserver для наблюдения за изменениями в DOM.
Mutation Observer предоставляет возможность наблюдать за изменениями в дереве DOM веб-страницы. В следующем примере демонстрируется реализация MutationObserver и его использование для наблюдения за добавлением новых узлов в документ:
mutations (список объектов MutationRecord) и mutationObserver (объект MutationObserver, обнаруживший мутации).ChildList обнаруживает изменения в прямых дочерних элементах targetNode.Subtree обнаруживает изменения во всех потомках узла.CharacterData используется для наблюдения за изменениями в текстовом содержании.document.Body в качестве target узла для наблюдения и объект config в качестве options для наблюдения.<p>, и используйте метод AppendChild(), чтобы добавить его в тело документа.<p>.<p> и текстового узла в данном случае, функция «обратного вызова» MutationObserver запускается и выводит на консоль сообщение, указывающее, какой узел был добавлен в документ.Если вы наблюдаете за изменениями узла, ваш обратный вызов не будет запущен до тех пор, пока DOM полностью не завершит изменение. Это поведение было разработано, чтобы заменить события мутации DOM и уменьшить проблему производительности уничтожения в предыдущей спецификации.
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 предлагает бесплатные Приложения HTML, которые представляют собой онлайн-коллекцию конвертеров, слияний, загрузчиков, инструментов SEO, генераторов кода HTML, инструменты URL и многое другое. Приложения работают в любой операционной системе с веб-браузером и не требуют установки дополнительного программного обеспечения. Легко конвертируйте, объединяйте, кодируйте, генерируйте HTML-код, извлекайте данные из Интернета или анализируйте веб-страницы с точки зрения SEO, где бы вы ни находились. Используйте нашу коллекцию веб-приложений HTML, чтобы выполнять повседневные задачи и сделать свой рабочий процесс безупречным!
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.