الفرق بين المراجعتين لصفحة: «JavaScript/Document/importNode»
إضافة الصّفحة |
لا ملخص تعديل |
||
(مراجعة متوسطة واحدة بواسطة مستخدم واحد آخر غير معروضة) | |||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:<code>Document.importNode()</code>}}</noinclude> | <noinclude>{{DISPLAYTITLE:<code>Document.importNode()</code>}}</noinclude> | ||
يُنشئ التّابع <code>Document.importNode()</code> نسخةً جديدةً من العقدة Node أو قطعة | يُنشئ التّابع <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>. | ||
==البنية العامة== | ==البنية العامة== | ||
سطر 7: | سطر 7: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
===<code>externalNode</code>=== | |||
الكائن الجديد من النّوع <code>Node</code> أو <code>DocumentFragment</code> المرغوب استيراده إلى المستند الحالي. قيمة الخاصيّة <code>[[JavaScript/parentNode|parentNode]]</code> الخاصّة بالعقدة الجديدة تكون <code>null</code> لأنّ العقدة لم تُدخَل بعدُ إلى شجرة المستند. | |||
الكائن الجديد من النّوع Node أو DocumentFragment المرغوب استيراده إلى المستند الحالي. قيمة الخاصيّة <code>[[JavaScript/parentNode|parentNode]]</code> الخاصّة بالعقدة الجديدة تكون null لأنّ العقدة لم | |||
===<code>deep</code>=== | |||
قيمةٌ منطقيّة من | قيمةٌ منطقيّة من النّوع <code>[[JavaScript/Boolean|Boolean]]</code> تُشير إلى ما إذا كان الاستيراد سيشمل كامل شجرة DOM الفرعيّة بدايةً بالعقدة الخارجيّة <code>externalNode</code>. إن كانت قيمة هذا المعامل <code>true</code> فسيكون النّسخ عميقًا، أي ستُنسخ العقدة الخارجيّة وجميع أولادها؛ أمّا إن كانت قيمته <code>false</code>، فستُستورَد العقدة <code>externalNode</code> وحدها. | ||
'''مُلاحظة:''' يُعدّ المعامل deep مُعاملًا اختياريّا في مواصفة DOM4. وعند عدم تمريره، فالقيمة الافتراضيّة تكون true. ما يجعل | '''مُلاحظة:''' يُعدّ المعامل <code>deep</code> مُعاملًا اختياريّا في مواصفة DOM4. وعند عدم تمريره، فالقيمة الافتراضيّة تكون <code>true</code>. ما يجعل النّسخَ عميقًا افتراضيًّا، ولتجنّب ذلك، لا بدّ من ضبط القيمة <code>false</code> للمُعامل <code>deep</code>. تغيّر هذا الأمر في المواصفة الأخيرة، وعند عدم تمرير التّابع فالقيمة الافتراضيّة ستكون <code>false</code> عكس ما سبق. ورغم أنّ المعامل اختياريّ، إلا أنّ عليك دائمًا تمرير قيمة له للحفاظ على التّوافقيّة. | ||
تغيّر هذا الأمر في المواصفة الأخيرة، وعند عدم تمرير | |||
== أمثلة == | |||
==أمثلة== | |||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
var iframe = document.getElementsByTagName("iframe")[0]; | var iframe = document.getElementsByTagName("iframe")[0]; | ||
سطر 28: | سطر 25: | ||
==ملاحظات== | ==ملاحظات== | ||
لا تُحذف العقدة الأصليّة من المُستند الأصليّ. والعقدة المُستورَدة نُسخةٌ من الأصليّة. | لا تُحذف العقدة الأصليّة من المُستند الأصليّ. والعقدة المُستورَدة نُسخةٌ من الأصليّة. | ||
يجب نسخ العقد من المُستندات الخارجيّة باستخدام التّابع <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: | سطر 48: | ||
|نعم | |نعم | ||
|- | |- | ||
! نسخة DOM 4 (المُعامل <code>deep</code>) | ! نسخة DOM 4 (المُعامل <code>deep</code> اختياريّ) | ||
|نعم | |نعم | ||
|لا | |لا | ||
سطر 65: | سطر 63: | ||
==مصادر ومواصفات== | ==مصادر ومواصفات== | ||
* مواصفة [https://dom.spec.whatwg.org/#dom-document-importnode DOM] | * مواصفة [https://dom.spec.whatwg.org/#dom-document-importnode DOM]. | ||
* مواصفة [https://www.w3.org/TR/DOM-Level-2-Core/core.html#Core-Document-importNode Document Object Model (DOM) Level 2 Core Specification] | * مواصفة [https://www.w3.org/TR/DOM-Level-2-Core/core.html#Core-Document-importNode Document Object Model (DOM) Level 2 Core Specification]. | ||
[[تصنيف:JavaScript]] | [[تصنيف:JavaScript]] |
المراجعة الحالية بتاريخ 09:31، 31 مارس 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 | لا | ؟ |
انظر أيضًا
مصادر ومواصفات
- مواصفة DOM.
- مواصفة Document Object Model (DOM) Level 2 Core Specification.