Document.importNode()‎

من موسوعة حسوب

يُنشئ التّابع 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 لا ؟

انظر أيضًا

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