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

من موسوعة حسوب
إضافة الصّفحة (لكنّها لم تُراجع بعد)
 
 
(3 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة)
سطر 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|سيحذف محتويات المستند]].


==البنية العامة==
==البنية العامة==
سطر 8: سطر 8:
document.write(markup);
document.write(markup);
</syntaxhighlight>
</syntaxhighlight>
===المعاملات===
===<code>markup</code>===
====<code>markup</code>====
سلسلة نصيّة تحتوي على النّص المرغوب كتابته على المستند.
سلسلة نصيّة تحتوي على النّص المرغوب كتابته على المستند.


==مثال==
==مثال==
<syntaxhighlight lang="html">
<syntaxhighlight lang="html">
<!DOCTYPE html>
<html>
<html>
<head>
<head>
   <title>write مثال</title>
   <title>write مثال</title>
   <script>
   <script>
     function newContent() {
     function newContent() {
سطر 28: سطر 26:
   </script>
   </script>
</head>
</head>
<body onload="newContent();">
<body onload="newContent();">
   <p>محتوى أصلي</p>
   <p>محتوى أصلي</p>
</body>
</body>
</html>


</html>
</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> مُضمَّنًا في وسم <script> سطريّ (على السّطر)، فلن يُستدعَى التّابع <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">
<script>  
<script>  
سطر 44: سطر 41:
</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> في السكربتات ذات الخاصيّة defer أو الخاصيّة async، وستحصل على رسالة تُشابه النّص <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> أكثر من مرّة واحدة داخل وسم iframe يُسبّب الخطأ <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.


==انظر أيضًا==
==انظر أيضًا==
سطر 57: سطر 54:


==مصادر ومواصفات==
==مصادر ومواصفات==
* مواصفة [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]]

المراجعة الحالية بتاريخ 02:01، 2 أبريل 2018

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

انظر أيضًا

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