الفرق بين المراجعتين لصفحة: «JavaScript/Document/write»
< JavaScript | Document
طلا ملخص تعديل |
ط ←مثال |
||
(مراجعتان متوسطتان بواسطة مستخدمين اثنين آخرين غير معروضتين) | |||
سطر 2: | سطر 2: | ||
يكتب التّابع <code>Document.write()</code> سلسلةً نصيّةً إلى مجرى (stream) مستندٍ فُتح بالتّابع <code>[[JavaScript/Window/open|window.open()]]</code>. | يكتب التّابع <code>Document.write()</code> سلسلةً نصيّةً إلى مجرى (stream) مستندٍ فُتح بالتّابع <code>[[JavaScript/Window/open|window.open()]]</code>. | ||
مُلاحظة: لأنّ التّابع <code>Document.write()</code> يكتب إلى مجرى المستند، فاستدعاؤه على مستندٍ مُغلقٍ (مُحمَّل) يستدعي تلقائيًّا التّابع <code>Document.open()</code>، الذي [[JavaScript/Document/open#.D9.85.D9.84.D8.A7.D8.AD.D8.B8.D8.A7.D8.AA|سيحذف محتويات المستند]]. | '''مُلاحظة:''' لأنّ التّابع <code>Document.write()</code> يكتب إلى مجرى المستند، فاستدعاؤه على مستندٍ مُغلقٍ (مُحمَّل) يستدعي تلقائيًّا التّابع <code>Document.open()</code>، الذي [[JavaScript/Document/open#.D9.85.D9.84.D8.A7.D8.AD.D8.B8.D8.A7.D8.AA|سيحذف محتويات المستند]]. | ||
==البنية العامة== | ==البنية العامة== | ||
سطر 8: | سطر 8: | ||
document.write(markup); | document.write(markup); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
===<code>markup</code>=== | |||
سلسلة نصيّة تحتوي على النّص المرغوب كتابته على المستند. | سلسلة نصيّة تحتوي على النّص المرغوب كتابته على المستند. | ||
==مثال== | ==مثال== | ||
<syntaxhighlight lang="html"> | <syntaxhighlight lang="html"> | ||
<!DOCTYPE html> | |||
<html> | <html> | ||
<head> | <head> | ||
<title>write مثال</title> | <title>write مثال</title> | ||
<script> | <script> | ||
function newContent() { | function newContent() { | ||
سطر 28: | سطر 26: | ||
</script> | </script> | ||
</head> | </head> | ||
<body onload="newContent();"> | <body onload="newContent();"> | ||
<p>محتوى أصلي</p> | <p>محتوى أصلي</p> | ||
</body> | </body> | ||
</html> | |||
</syntaxhighlight> | </syntaxhighlight> | ||
==ملاحظات== | ==ملاحظات== | ||
* الكتابة إلى مستند حُمّل مُسبقًا دون استدعاء التّابع <code>[[JavaScript/Window/open|window.open()]]</code> سيستدعي هذا الأخير تلقائيًّا. عند إنهاء الكتابة للمستند، يُنصَح باستدعاء التّابع <code>[[JavaScript/Window/ | * الكتابة إلى مستند حُمّل مُسبقًا دون استدعاء التّابع <code>[[JavaScript/Window/open|window.open()]]</code> سيستدعي هذا الأخير تلقائيًّا. عند إنهاء الكتابة للمستند، يُنصَح باستدعاء التّابع <code>[[JavaScript/Window/close|window.close()]]</code> لإخبار المُتصفّح بإنهاء تحميل الصّفحة. يُفسَّرُ (parse) النّص الذي يُكتَب على المستند إلى هيكل المستند. في المثال أعلاه، يُصبح الوسم h1 عقدةً في المستند. | ||
إن كان استدعاء التّابع <code>Document.write()</code> مُضمَّنًا في وسم <code>[[HTML/script|<script>]]</code> سطريّ (على السّطر)، فلن يُستدعَى التّابع <code>[[JavaScript/Window/open|window.open()]]</code>. وإليك مثالًا على هذا: | إن كان استدعاء التّابع <code>Document.write()</code> مُضمَّنًا في وسم <code>[[HTML/script|<script>]]</code> سطريّ (على السّطر)، فلن يُستدعَى التّابع <code>[[JavaScript/Window/open|window.open()]]</code>. وإليك مثالًا على هذا: | ||
<syntaxhighlight lang="html"> | <syntaxhighlight lang="html"> | ||
سطر 44: | سطر 41: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
* لا يعمل التّابع <code>Document.write()</code> والتّابع <code>Document.writeln()</code> في مستندات XHTML، وستحصل على خطأ <code>NS_ERROR_DOM_NOT_SUPPORTED_ERR</code> يفيد بأنّ العمليّة غير مدعومة في سطر أوامر الأخطاء. يحدث هذا | * لا يعمل التّابع <code>Document.write()</code> والتّابع <code>Document.writeln()</code> في مستندات XHTML، وستحصل على خطأ <code>NS_ERROR_DOM_NOT_SUPPORTED_ERR</code> يفيد بأنّ العمليّة غير مدعومة في سطر أوامر الأخطاء. يحدث هذا عند محاولة فتح ملفّ محليّ ذو الامتداد <code>.xhtml</code> أو أي مستندٍ مُقدَّمٍ بنوع MIME من النّوع <code>application/xhtml+xml</code>. للاستزادة انظر [http://www.w3.org/MarkUp/2004/xhtml-faq#docwrite أسئلة W3C XHTML الشّائعة]. | ||
* ستُتجاهل استدعاءات التّابع <code>Document.write()</code> في السكربتات ذات الخاصيّة <code>[[HTML/script#defer|defer]]</code> أو الخاصيّة <code>[[HTML/script#async|async]]</code>، وستحصل على رسالة تُشابه النّص <code>"A call to document.write() from an asynchronously-loaded external script was ignored"</code> تُفيد بأنّ استدعاء التّابع من سكربت خارجيّ قد تُجوهِل في طرفيّة الأخطاء. | * ستُتجاهل استدعاءات التّابع <code>Document.write()</code> في السكربتات ذات الخاصيّة <code>[[HTML/script#defer|defer]]</code> أو الخاصيّة <code>[[HTML/script#async|async]]</code>، وستحصل على رسالة تُشابه النّص <code>"A call to document.write() from an asynchronously-loaded external script was ignored"</code> تُفيد بأنّ استدعاء التّابع من سكربت خارجيّ حُمّل بشكل غير متزامن قد تُجوهِل في طرفيّة الأخطاء. | ||
* استدعاء التّابع <code>Document.write()</code> أكثر من مرّة واحدة داخل وسم <code>iframe</code> يُسبّب الخطأ <code>SCRIPT70: Permission denied</code> في متصفّح Edge فقط، الخطأ يُفيد بأنّ التّصريح قد مُنِع. | * استدعاء التّابع <code>Document.write()</code> أكثر من مرّة واحدة داخل وسم <code>iframe</code> يُسبّب الخطأ <code>SCRIPT70: Permission denied</code> في متصفّح Edge فقط، الخطأ يُفيد بأنّ التّصريح قد مُنِع. | ||
* بدءًا من الإصدار 55 من متصفّح Chrome، لن تُنفّذ عناصر <script> المُدخَلة عبر التّابع <code>Document.write()</code> في حالة فقدان خبيئة HTTP للمُستخدمين المتّصلين عبر اتّصال 2G. | * بدءًا من الإصدار 55 من متصفّح Chrome، لن تُنفّذ عناصر <code>[[HTML/script|<script>]]</code> المُدخَلة عبر التّابع <code>Document.write()</code> في حالة فقدان خبيئة HTTP للمُستخدمين المتّصلين عبر اتّصال 2G. | ||
==انظر أيضًا== | ==انظر أيضًا== | ||
سطر 57: | سطر 54: | ||
==مصادر ومواصفات== | ==مصادر ومواصفات== | ||
* مواصفة [http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-75233634 DOM Level 2 HTML: | * مواصفة [http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-75233634 DOM Level 2 HTML: write() Method]. | ||
* مواصفة [http://www.w3.org/TR/2011/WD-html5-author-20110705/apis-in-html-documents.html#dynamic-markup-insertion Dynamic markup insertion in HTML] | * مواصفة [http://www.w3.org/TR/2011/WD-html5-author-20110705/apis-in-html-documents.html#dynamic-markup-insertion Dynamic markup insertion in HTML]. | ||
[[تصنيف:JavaScript]] | [[تصنيف:JavaScript]] |
المراجعة الحالية بتاريخ 02:01، 2 أبريل 2018
يكتب التّابع Document.write()
سلسلةً نصيّةً إلى مجرى (stream) مستندٍ فُتح بالتّابع window.open()
.
مُلاحظة: لأنّ التّابع Document.write()
يكتب إلى مجرى المستند، فاستدعاؤه على مستندٍ مُغلقٍ (مُحمَّل) يستدعي تلقائيًّا التّابع Document.open()
، الذي سيحذف محتويات المستند.
البنية العامة
document.write(markup);
markup
سلسلة نصيّة تحتوي على النّص المرغوب كتابته على المستند.
مثال
<!DOCTYPE html>
<html>
<head>
<title>write مثال</title>
<script>
function newContent() {
alert("تحميل محتوى جديد");
document.open();
document.write("<h1>المحتوى الجديد الذي سيستبدل المحتوى القديم</h1>");
document.close();
}
</script>
</head>
<body onload="newContent();">
<p>محتوى أصلي</p>
</body>
</html>
ملاحظات
- الكتابة إلى مستند حُمّل مُسبقًا دون استدعاء التّابع
window.open()
سيستدعي هذا الأخير تلقائيًّا. عند إنهاء الكتابة للمستند، يُنصَح باستدعاء التّابعwindow.close()
لإخبار المُتصفّح بإنهاء تحميل الصّفحة. يُفسَّرُ (parse) النّص الذي يُكتَب على المستند إلى هيكل المستند. في المثال أعلاه، يُصبح الوسم h1 عقدةً في المستند.
إن كان استدعاء التّابع Document.write()
مُضمَّنًا في وسم <script>
سطريّ (على السّطر)، فلن يُستدعَى التّابع window.open()
. وإليك مثالًا على هذا:
<script>
document.write("<h1>Main title</h1>")
</script>
- لا يعمل التّابع
Document.write()
والتّابعDocument.writeln()
في مستندات XHTML، وستحصل على خطأNS_ERROR_DOM_NOT_SUPPORTED_ERR
يفيد بأنّ العمليّة غير مدعومة في سطر أوامر الأخطاء. يحدث هذا عند محاولة فتح ملفّ محليّ ذو الامتداد .xhtml
أو أي مستندٍ مُقدَّمٍ بنوع MIME من النّوعapplication/xhtml+xml
. للاستزادة انظر أسئلة W3C XHTML الشّائعة.
- ستُتجاهل استدعاءات التّابع
Document.write()
في السكربتات ذات الخاصيّةdefer
أو الخاصيّةasync
، وستحصل على رسالة تُشابه النّص"A call to document.write() from an asynchronously-loaded external script was ignored"
تُفيد بأنّ استدعاء التّابع من سكربت خارجيّ حُمّل بشكل غير متزامن قد تُجوهِل في طرفيّة الأخطاء.
- استدعاء التّابع
Document.write()
أكثر من مرّة واحدة داخل وسمiframe
يُسبّب الخطأSCRIPT70: Permission denied
في متصفّح Edge فقط، الخطأ يُفيد بأنّ التّصريح قد مُنِع.
- بدءًا من الإصدار 55 من متصفّح Chrome، لن تُنفّذ عناصر
<script>
المُدخَلة عبر التّابعDocument.write()
في حالة فقدان خبيئة HTTP للمُستخدمين المتّصلين عبر اتّصال 2G.
انظر أيضًا
مصادر ومواصفات
- مواصفة DOM Level 2 HTML: write() Method.
- مواصفة Dynamic markup insertion in HTML.