الفرق بين المراجعتين لصفحة: «JavaScript/Document/importNode»

من موسوعة حسوب
إضافة الصّفحة
 
روابط وتنسيق
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:<code>Document.importNode()‎</code>}}</noinclude>
<noinclude>{{DISPLAYTITLE:<code>Document.importNode()‎</code>}}</noinclude>
يُنشئ التّابع <code>Document.importNode()‎</code> نسخةً جديدةً من العقدة Node أو قطعة المُستندDocumentFragment المُحدّدة من مستندٍ آخر ليُمكِنَ إدخالها إلى المستند الحاليّ. لكنّها لا تُدخل إلى شجرة المُستند، لفعل ذلك، عليك استدعاء تابع مثل <code>Node.appendChild()‎</code> أو <code>Node.insertBefore()‎</code>.
يُنشئ التّابع <code>Document.importNode()‎</code> نسخةً جديدةً من العقدة <code>[[JavaScript/Node|Node]]</code> أو قطعة المُستند <code>[[JavaScript/DocumentFragment|DocumentFragment]]</code> المُحدّدة من مستندٍ آخر ليُمكِنَ إدخالها إلى المستند الحاليّ. لكنّها لا تُدخل إلى شجرة المُستند، لفعل ذلك، عليك استدعاء تابع مثل <code>[[JavaScript/Node/appendChild|Node.appendChild()‎]]</code> أو <code>[[JavaScript/Node/insertBefore|Node.insertBefore()‎]]</code>.


==البنية العامة==
==البنية العامة==
سطر 9: سطر 9:
===القيم===
===القيم===
====<code>externalNode‎</code>====
====<code>externalNode‎</code>====
الكائن الجديد من النّوع  Node أو DocumentFragment المرغوب استيراده إلى المستند الحالي. قيمة الخاصيّة <code>[[JavaScript/parentNode|parentNode]]</code> الخاصّة بالعقدة الجديدة تكون null لأنّ العقدة لم تُدخل بعدُ إلى شجرة المستند.
الكائن الجديد من النّوع  <code>Node</code> أو <code>DocumentFragment</code> المرغوب استيراده إلى المستند الحالي. قيمة الخاصيّة <code>[[JavaScript/parentNode|parentNode]]</code> الخاصّة بالعقدة الجديدة تكون <code>null</code> لأنّ العقدة لم تُدخل بعدُ إلى شجرة المستند.


====<code>deep‎</code>====
====<code>deep‎</code>====
قيمةٌ منطقيّة من النّوعBoolean تُشير إلى ما إذا كان الاستيراد سيشمل كامل شجرة DOM الفرعيّة بدايةً بالعقدة الخارجيّة externalNode. إن كانت قيمة هذا المعامل true فسيكون النّسخ عميقًا، أي ستُنسخ العقدة الخارجيّة وجميع أولادها؛ أمّا إن كانت قيمته false، فستُستورَد العقدة externalNode وحدها.
قيمةٌ منطقيّة من النّوع <code>[[JavaScript/Boolean|Boolean]]</code> تُشير إلى ما إذا كان الاستيراد سيشمل كامل شجرة DOM الفرعيّة بدايةً بالعقدة الخارجيّة <code>externalNode</code>. إن كانت قيمة هذا المعامل <code>true</code> فسيكون النّسخ عميقًا، أي ستُنسخ العقدة الخارجيّة وجميع أولادها؛ أمّا إن كانت قيمته <code>false</code>، فستُستورَد العقدة <code>externalNode</code> وحدها.


'''مُلاحظة:''' يُعدّ المعامل deep مُعاملًا اختياريّا في مواصفة DOM4. وعند عدم تمريره، فالقيمة الافتراضيّة تكون true. ما يجعل النّسخ عميقًا افتراضيًّا. ولتجنّب ذلك، لا بدّ من تضبط القيمة false للمُعامل deep.
'''مُلاحظة:''' يُعدّ المعامل <code>deep</code> مُعاملًا اختياريّا في مواصفة DOM4. وعند عدم تمريره، فالقيمة الافتراضيّة تكون <code>'''true'''</code>. ما يجعل النّسخَ عميقًا افتراضيًّا، ولتجنّب ذلك، لا بدّ من ضبط القيمة <code>false</code> للمُعامل <code>deep</code>. تغيّر هذا الأمر في المواصفة الأخيرة، وعند عدم تمرير التّابع،  فالقيمة الافتراضيّة تكون <code>'''false'''</code> عكس ما سبق. ورغم أنّ المعامل اختياريّ، إلا أنّ عليك دائمًا تمرير قيمة له للحفاظ على التّوافقيّة.
تغيّر هذا الأمر في المواصفة الأخيرة، وعند عدم تمرير التّابع،  فالقيمة الافتراضيّة تكون false عكس ما سبق. ورغم أنّ المعامل اختياريّ، إلا أنّ عليك دائمًا تمرير قيمة له للحفاظ على التّوافقيّة.




سطر 28: سطر 27:
==ملاحظات==
==ملاحظات==
لا تُحذف العقدة الأصليّة من المُستند الأصليّ. والعقدة المُستورَدة نُسخةٌ من الأصليّة.
لا تُحذف العقدة الأصليّة من المُستند الأصليّ. والعقدة المُستورَدة نُسخةٌ من الأصليّة.
يجب نسخ العقد من المُستندات الخارجيّة باستخدام التّابع <code>[[Document/importNode|document.importNode()]]</code>‎ أو تبنّيها بالتّابع <code>[[Document/adoptNode|document.adoptNode()]]</code>‎ قبل إمكان إدخالها إلى المُستند الحاليّ. للاستزادة حول مشاكل <code>[[JavaScript/Node/ownerDocument|ownerDocument]]</code> انظر  الأسئلة الشّائعة على [http://www.w3.org/DOM/faq.html#ownerdoc W3C DOM].
يجب نسخ العقد من المُستندات الخارجيّة باستخدام التّابع <code>[[Document/importNode|document.importNode()]]</code>‎ أو تبنّيها بالتّابع <code>[[Document/adoptNode|document.adoptNode()]]</code>‎ قبل إمكان إدخالها إلى المُستند الحاليّ. للاستزادة حول مشاكل <code>[[JavaScript/Node/ownerDocument|ownerDocument]]</code> انظر  الأسئلة الشّائعة على [http://www.w3.org/DOM/faq.html#ownerdoc W3C DOM].


سطر 50: سطر 50:
|نعم
|نعم
|-
|-
! نسخة DOM 4 (المُعامل <code>deep</code>)
! نسخة DOM 4 (المُعامل <code>deep</code> اختياريّ)
|نعم
|نعم
|لا
|لا

مراجعة 13:16، 27 مارس 2018

يُنشئ التّابع Document.importNode()‎ نسخةً جديدةً من العقدة Node أو قطعة المُستند DocumentFragment المُحدّدة من مستندٍ آخر ليُمكِنَ إدخالها إلى المستند الحاليّ. لكنّها لا تُدخل إلى شجرة المُستند، لفعل ذلك، عليك استدعاء تابع مثل Node.appendChild()‎ أو Node.insertBefore()‎.

البنية العامة

var node = document.importNode(externalNode, deep);

القيم

externalNode‎

الكائن الجديد من النّوع Node أو DocumentFragment المرغوب استيراده إلى المستند الحالي. قيمة الخاصيّة parentNode الخاصّة بالعقدة الجديدة تكون null لأنّ العقدة لم تُدخل بعدُ إلى شجرة المستند.

deep‎

قيمةٌ منطقيّة من النّوع Boolean تُشير إلى ما إذا كان الاستيراد سيشمل كامل شجرة DOM الفرعيّة بدايةً بالعقدة الخارجيّة externalNode. إن كانت قيمة هذا المعامل true فسيكون النّسخ عميقًا، أي ستُنسخ العقدة الخارجيّة وجميع أولادها؛ أمّا إن كانت قيمته false، فستُستورَد العقدة externalNode وحدها.

مُلاحظة: يُعدّ المعامل deep مُعاملًا اختياريّا في مواصفة DOM4. وعند عدم تمريره، فالقيمة الافتراضيّة تكون true. ما يجعل النّسخَ عميقًا افتراضيًّا، ولتجنّب ذلك، لا بدّ من ضبط القيمة false للمُعامل deep. تغيّر هذا الأمر في المواصفة الأخيرة، وعند عدم تمرير التّابع، فالقيمة الافتراضيّة تكون false عكس ما سبق. ورغم أنّ المعامل اختياريّ، إلا أنّ عليك دائمًا تمرير قيمة له للحفاظ على التّوافقيّة.


أمثلة

var iframe = document.getElementsByTagName("iframe")[0];
var oldNode = iframe.contentWindow.document.getElementById("myNode");
var newNode = document.importNode(oldNode, true);
document.getElementById("container").appendChild(newNode);

ملاحظات

لا تُحذف العقدة الأصليّة من المُستند الأصليّ. والعقدة المُستورَدة نُسخةٌ من الأصليّة.

يجب نسخ العقد من المُستندات الخارجيّة باستخدام التّابع document.importNode()‎ أو تبنّيها بالتّابع document.adoptNode()‎ قبل إمكان إدخالها إلى المُستند الحاليّ. للاستزادة حول مشاكل ownerDocument انظر الأسئلة الشّائعة على W3C DOM.

لا يُلزِم مُتصفّح Firefox على العمل بهذه القاعدة (لأنّ الإلزام بها عطّل بعض المواقع). وإنما يُشجّع مطوّري الويب على إصلاح الشيفرة الخاصّة بهم لاتّباع هذه القاعدة لتوافقيّةٍ مُستقبليّةٍ أفضل.

دعم المتصفحات

الميزة Chrome Internet Explorer Edge Firefox Opera Safari
نسخة DOM 2 نعم 9 نعم 1 9 نعم
نسخة DOM 4 (المُعامل deep اختياريّ) نعم لا نعم 10 لا ؟

انظر أيضًا

مصادر ومواصفات