| 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 >}}
إذا كنت مطور 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> تعني إضافة عقدة جديدة (مثل <p> أو <div>) برمجيًا إلى منطقة المحتوى الرئيسية للمستند. عند دمج ذلك مع مراقب التحولات، يمكنك اكتشاف تلك الإضافة فورًا وتشغيل منطق مخصص — وهو مثالي لتوليد HTML ديناميكي، الاختبار، أو سيناريوهات التصيير على الخادم.
- مراقبة في الوقت الحقيقي: تفاعل مع تعديلات الـ DOM فور حدوثها.
- كود أنظف: لا حاجة إلى الاستطلاع اليدوي أو معالجة أحداث معقدة.
- اتساق عبر المنصات: يعمل بنفس الطريقة سواء صُدر HTML في المتصفح أو على الخادم.
- الأداء: المراقبون فعالون ويعملون بشكل غير متزامن، مما يبقي الخيط الرئيسي حرًا.
- مجموعة تطوير Java (JDK) – الإصدار 8 أو أعلى.
- Aspose.HTML for Java – حمّل أحدث نسخة من الموقع الرسمي.
- بيئة تطوير متكاملة (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();يحتاج مراقب التحولات إلى دالة رد نداء تُستدعى كلما حدث تحول. في رد النداء لدينا نطبع ببساطة رسالة لكل عقدة مضافة.
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();
}
});
});
}
});نحدد للمراقب ما يجب مراقبته — تغييرات قائمة الأطفال، تعديلات الشجرة الفرعية، وتحديثات البيانات النصية.
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);الآن نقوم فعليًا بـ إضافة عنصر إلى الـ 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);تُبلّغ التحولات بشكل غير متزامن، لذا نُوقف التنفيذ مؤقتًا قليلًا لإعطاء المراقب الوقت لمعالجة التغيير.
// Since mutations are working in async mode, wait for a few seconds
synchronized (this) {
wait(5000);
}عند الانتهاء من المراقبة، احرص دائمًا على فصل مراقب التحولات لتحرير الموارد.
// Stop observing
observer.disconnect();في العديد من السيناريوهات الواقعية قد تحتاج إلى إدراج فقرة تحتوي على محتوى ديناميكي، مثل نص يُنشئه المستخدم أو رسائل من الخادم. بإنشاء عنصر <p>، إلحاقه بالـ <body>، ثم إضافة عقدة نصية، تحقق ذلك بالضبط. يعمل هذا النهج بسلاسة مع مراقب التحولات الذي أعددناه، لذا يتم تسجيل الإضافة فورًا.
إعداد المراقب الذي استخدمناه (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 >}}