Skip to content

Latest commit

 

History

History
170 lines (131 loc) · 11.5 KB

File metadata and controls

170 lines (131 loc) · 11.5 KB
date 2026-03-18
description تعلم كيفية إلحاق عنصر إلى الـ body ومراقبة تغييرات الـ DOM في Java باستخدام Mutation Observer الخاص بـ Aspose.HTML. يتضمن خطوات لإنشاء مستند HTML في Java وفصل الـ Mutation Observer.
linktitle Append Element to Body - Observing Node Additions
second_title Java HTML Processing with Aspose.HTML
title إضافة عنصر إلى الـ Body باستخدام Aspose.HTML للـ Java عبر مراقب تعديل الـ DOM
url /ar/java/advanced-usage/dom-mutation-observer-observing-node-additions/
weight 11

{{< blocks/products/pf/main-wrap-class >}} {{< blocks/products/pf/main-container >}} {{< blocks/products/pf/tutorial-page-section >}}

إضافة عنصر إلى الـ body باستخدام Aspose.HTML for Java ومراقب التحولات في DOM

إذا كنت مطور Java وتحتاج إلى إضافة عنصر إلى الـ body مع مراقبة كل تغيير يحدث في الـ DOM، فقد وصلت إلى المكان الصحيح. يجعل Aspose.HTML for Java من السهل إنشاء كائنات HTML document Java، ربط مراقب التحولات (Mutation Observer)، والتفاعل فورًا عندما تُضاف أو تُحذف أو تُعدل العقد. في هذا الدرس خطوة بخطوة سنستعرض العملية بالكامل — من إعداد المستند إلى فصل مراقب التحولات بشكل نظيف — حتى تتمكن من مراقبة تغييرات الـ DOM بثقة في تطبيقات Java الخاصة بك.

إجابات سريعة

  • ماذا يفعل مراقب التحولات (Mutation Observer)؟ يراقب شجرة الـ DOM ويُخبرك بإضافات أو حذف أو تغييرات في السمات.
  • أي مكتبة توفر ذلك في Java؟ Aspose.HTML for Java يتضمن واجهة برمجة تطبيقات كاملة لمراقب التحولات.
  • هل أحتاج إلى ترخيص للاستخدام في الإنتاج؟ نعم، يلزم وجود ترخيص صالح لـ Aspose.HTML للاستخدام التجاري.
  • هل يمكنني مراقبة تغييرات العقد النصية؟ بالتأكيد — عيّن characterData إلى true في إعدادات المراقب.
  • كيف أوقف المراقب؟ استدعِ observer.disconnect() بمجرد الانتهاء من المراقبة.

ما معنى “إضافة عنصر إلى الـ body” في سياق Aspose.HTML؟

إضافة عنصر إلى وسم <body> تعني إضافة عقدة جديدة (مثل <p> أو <div>) برمجيًا إلى منطقة المحتوى الرئيسية للمستند. عند دمج ذلك مع مراقب التحولات، يمكنك اكتشاف تلك الإضافة فورًا وتشغيل منطق مخصص — وهو مثالي لتوليد HTML ديناميكي، الاختبار، أو سيناريوهات التصيير على الخادم.

لماذا نستخدم مراقب التحولات في Java؟

  • مراقبة في الوقت الحقيقي: تفاعل مع تعديلات الـ DOM فور حدوثها.
  • كود أنظف: لا حاجة إلى الاستطلاع اليدوي أو معالجة أحداث معقدة.
  • اتساق عبر المنصات: يعمل بنفس الطريقة سواء صُدر HTML في المتصفح أو على الخادم.
  • الأداء: المراقبون فعالون ويعملون بشكل غير متزامن، مما يبقي الخيط الرئيسي حرًا.

المتطلبات المسبقة

  1. مجموعة تطوير Java (JDK) – الإصدار 8 أو أعلى.
  2. Aspose.HTML for Java – حمّل أحدث نسخة من الموقع الرسمي.
  3. بيئة تطوير متكاملة (IDE) – IntelliJ IDEA، Eclipse، أو أي محرر يدعم Java.

يمكنك الحصول على Aspose.HTML for Java من صفحة التحميل هنا.

استيراد الحزم

أولًا، استورد الفئات التي ستحتاجها. سيؤدي ذلك أيضًا إلى إنشاء مستند HTML فارغ سنملأه لاحقًا.

// Import necessary packages
import com.aspose.html.HTMLDocument;
import com.aspose.html.dom.mutations.MutationObserver;
import com.aspose.html.dom.mutations.MutationCallback;
import com.aspose.html.dom.mutations.MutationRecord;
import com.aspose.html.dom.mutations.MutationObserverInit;
import com.aspose.html.dom.Element;
import com.aspose.html.dom.Text;
import com.aspose.html.generic.IGenericList;

// Create an empty HTML document
HTMLDocument document = new HTMLDocument();

الخطوة 1: إنشاء مثيل لمراقب التحولات (mutation observer java)

يحتاج مراقب التحولات إلى دالة رد نداء تُستدعى كلما حدث تحول. في رد النداء لدينا نطبع ببساطة رسالة لكل عقدة مضافة.

MutationObserver observer = new MutationObserver(new MutationCallback() {
    @Override
    public void invoke(IGenericList<MutationRecord> mutations, MutationObserver mutationObserver) {
        mutations.forEach(mutationRecord -> {
            mutationRecord.getAddedNodes().forEach(node -> {
                synchronized (this) {
                    System.out.println("The '" + node + "' node was added to the document.");
                    notifyAll();
                }
            });
        });
    }
});

الخطوة 2: تكوين المراقب (monitor dom changes java)

نحدد للمراقب ما يجب مراقبته — تغييرات قائمة الأطفال، تعديلات الشجرة الفرعية، وتحديثات البيانات النصية.

MutationObserverInit config = new MutationObserverInit();
config.setChildList(true);
config.setSubtree(true);
config.setCharacterData(true);

// Pass in the target node to observe with the specified configuration
observer.observe(document.getBody(), config);

الخطوة 3: إضافة عنصر إلى الـ body وتفعيل المراقب

الآن نقوم فعليًا بـ إضافة عنصر إلى الـ body. إضافة عنصر <p> مع عقدة نصية سيؤدي إلى تشغيل المراقب الذي أعددناه مسبقًا.

// Create a paragraph element and append it to the document body
Element p = document.createElement("p");
document.getBody().appendChild(p);

// Create a text and append it to the paragraph
Text text = document.createTextNode("Hello World");
p.appendChild(text);

الخطوة 4: الانتظار للملاحظات (asynchronous handling)

تُبلّغ التحولات بشكل غير متزامن، لذا نُوقف التنفيذ مؤقتًا قليلًا لإعطاء المراقب الوقت لمعالجة التغيير.

// Since mutations are working in async mode, wait for a few seconds
synchronized (this) {
    wait(5000);
}

الخطوة 5: فصل المراقب (disconnect mutation observer)

عند الانتهاء من المراقبة، احرص دائمًا على فصل مراقب التحولات لتحرير الموارد.

// Stop observing
observer.disconnect();

كيفية إضافة فقرة إلى الـ body

في العديد من السيناريوهات الواقعية قد تحتاج إلى إدراج فقرة تحتوي على محتوى ديناميكي، مثل نص يُنشئه المستخدم أو رسائل من الخادم. بإنشاء عنصر <p>، إلحاقه بالـ <body>، ثم إضافة عقدة نصية، تحقق ذلك بالضبط. يعمل هذا النهج بسلاسة مع مراقب التحولات الذي أعددناه، لذا يتم تسجيل الإضافة فورًا.

كيفية مراقبة تغييرات الـ DOM في Java

إعداد المراقب الذي استخدمناه (childList، subtree، characterData) يغطي أكثر أنواع التغييرات شيوعًا. إذا كنت بحاجة إلى تتبع تعديل السمات أيضًا، ما عليك سوى تمكين config.setAttributes(true). يعمل المراقب على خيط خلفي، لذا يظل تدفق التطبيق الرئيسي غير متقطع بينما تتلقى سجلات التحولات المفصلة.

الأخطاء الشائعة والنصائح

  • لا تنسَ فصل المراقب أبداً — ترك المراقب يعمل قد يسبب تسربًا للذاكرة.
  • سلامة الخيوط: رد النداء يُنفّذ على خيط خلفي؛ استخدم التزامن المناسب إذا عدلت بيانات مشتركة.
  • راقب العقدة الصحيحة: مراقبة document.getBody() تلتقط معظم تغييرات الواجهة، لكن يمكنك استهداف أي عنصر لمراقبة أكثر دقة.
  • نصيحة احترافية: استخدم config.setAttributes(true) إذا كنت تحتاج إلى مراقبة تغييرات السمات أيضًا.

الأسئلة المتكررة

س: ما هو مراقب التحولات في الـ DOM؟
ج: هو واجهة برمجة تطبيقات تراقب شجرة الـ DOM للتغييرات مثل إضافة أو حذف عقد أو تعديل السمات، وتُرسل تلك الأحداث عبر رد نداء.

س: هل يمكنني استخدام Aspose.HTML for Java في المشاريع التجارية؟
ج: نعم، بشرط وجود ترخيص صالح لـ Aspose.HTML. تفاصيل الشراء متوفرة هنا.

س: هل هناك نسخة تجريبية مجانية لـ Aspose.HTML for Java؟
ج: بالتأكيد — حمّل نسخة تجريبية من صفحة الإصدارات.

س: كيف أراقب تغييرات البيانات النصية؟
ج: عيّن config.setCharacterData(true) في إعدادات المراقب، كما هو موضح في الخطوة 2.

س: ماذا أفعل بعد الانتهاء من المراقبة؟
ج: استدعِ observer.disconnect() (الخطوة 5) وإذا أنشأت كائن HTMLDocument، حرّره بـ document.dispose() لتحرير الموارد الأصلية.

الخلاصة

لقد تعلمت الآن كيفية إضافة عنصر إلى الـ body، إعداد مراقب التحولات في Java، ومراقبة تغييرات الـ DOM في Java باستخدام Aspose.HTML for Java. باتباع هذه الخطوات يمكنك اكتشاف أي تحول في الـ DOM والرد عليه بثقة في تطبيقات Java على الخادم. لا تتردد في تجربة أنواع عقد مختلفة، مراقبة السمات، أو حتى إنشاء مراقبين متعددين لتلبية سيناريوهات أكثر تعقيدًا.

إذا واجهت أي مشكلة، فإن المجتمع جاهز للمساعدة في منتدى Aspose.HTML. للحصول على تفاصيل أعمق حول الـ API، راجع الوثائق الرسمية لـ Aspose.HTML for Java.


آخر تحديث: 2026-03-18
تم الاختبار مع: Aspose.HTML for Java 24.11
المؤلف: Aspose

{{< /blocks/products/pf/tutorial-page-section >}}

{{< /blocks/products/pf/main-container >}} {{< /blocks/products/pf/main-wrap-class >}}

{{< blocks/products/products-backtop-button >}}