Document.write()
< JavaScript | Document
يكتب التّابع 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.open()
لإخبار المُتصفّح بإنهاء تحميل الصّفحة. يُفسَّرُ (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 أو أي مستندٍ مُقدَّمٍ مع نوع MIMEapplication/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.