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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
ط
 
(مراجعتان متوسطتان بواسطة مستخدمين اثنين آخرين غير معروضتين)
سطر 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> مُضمَّنًا في وسم <code>[[HTML/script|<script>]]</code> سطريّ (على السّطر)، فلن يُستدعَى التّابع <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">
سطر 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> في السكربتات ذات الخاصيّة <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> في السكربتات ذات الخاصيّة <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> أكثر من مرّة واحدة داخل وسم <code>iframe</code> يُسبّب الخطأ <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.

انظر أيضًا

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