Document.write()‎

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

يكتب التّابع 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.

انظر أيضًا

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