الفرق بين المراجعتين ل"JavaScript/Document/write"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
ط
ط
سطر 8: سطر 8:
 
document.write(markup);
 
document.write(markup);
 
</syntaxhighlight>
 
</syntaxhighlight>
===المعاملات===
+
===<code>markup</code>===
====<code>markup</code>====
 
 
سلسلة نصيّة تحتوي على النّص المرغوب كتابته على المستند.
 
سلسلة نصيّة تحتوي على النّص المرغوب كتابته على المستند.
  
سطر 57: سطر 56:
  
 
==مصادر ومواصفات==
 
==مصادر ومواصفات==
* مواصفة [http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-75233634 DOM Level 2 HTML: write() Method]
+
* مواصفة [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]]

مراجعة 01:54، 2 أبريل 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.

انظر أيضًا

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