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

من موسوعة حسوب
طلا ملخص تعديل
طلا ملخص تعديل
سطر 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|سيحذف محتويات المستند]].


==البنية العامة==
==البنية العامة==
سطر 36: سطر 36:
</syntaxhighlight>
</syntaxhighlight>
==ملاحظات==
==ملاحظات==
* الكتابة إلى مستند حُمّل مُسبقًا دون استدعاء التّابع  <code>[[JavaScript/Window/open|window.open‎()‎]]</code> سيستدعي هذا الأخير تلقائيًّا. عند إنهاء الكتابة للمستند، يُنصَح باستدعاء التّابع <code>[[JavaScript/Window/open|window.open‎()‎]]</code> لإخبار المُتصفّح بإنهاء تحميل الصّفحة. يُفسَّرُ (parse) النّص الذي يُكتَب على المستند إلى هيكل المستند. في المثال أعلاه، يُصبح الوسم h1 عقدةً في المستند.
* الكتابة إلى مستند حُمّل مُسبقًا دون استدعاء التّابع  <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: سطر 44:
</syntaxhighlight>
</syntaxhighlight>


* لا يعمل التّابع <code>Document.write‎()‎</code> والتّابع <code>Document.writeln‎()‎</code> في مستندات XHTML، وستحصل على خطأ <code>NS_ERROR_DOM_NOT_SUPPORTED_ERR</code> يفيد بأنّ العمليّة غير مدعومة في سطر أوامر الأخطاء. يحدث هذا عن محاولة فتح ملفّ محليّ ذو الامتداد ‎.‎xhtml أو أي مستندٍ مُقدَّمٍ مع نوع MIME‏‏ <code>application‎/‎xhtml‎+‎xml‎</code>. للاستزادة انظر [http://www.w3.org/MarkUp/2004/xhtml-faq#docwrite أسئلة W3C XHTML الشّائعة].
* لا يعمل التّابع <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.


==انظر أيضًا==
==انظر أيضًا==

مراجعة 15:59، 31 مارس 2018

يكتب التّابع Document.write‎()‎ سلسلةً نصيّةً إلى مجرى (stream) مستندٍ فُتح بالتّابع window.open‎()‎.

مُلاحظة: لأنّ التّابع Document.write‎()‎ يكتب إلى مجرى المستند، فاستدعاؤه على مستندٍ مُغلقٍ (مُحمَّل) يستدعي تلقائيًّا التّابع Document.open‎()‎، الذي سيحذف محتويات المستند.

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

document.write(markup);

المعاملات

markup

سلسلة نصيّة تحتوي على النّص المرغوب كتابته على المستند.

مثال

<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.

انظر أيضًا

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