Document.write()
< JavaScript | Document
يكتب التّابع 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.