العنصر <script>

من موسوعة حسوب
اذهب إلى: تصفح، ابحث

يُستخدَم العنصر <script> لتضمين أو الإشارة إلى سكربت قابل للتنفيذ.

مثال عن كيفية استخدام هذا العنصر لتضمين سكربت خارجي في HTML 4 و XHTML:
<script type="text/javascript" src="javascript.js"></script>
أما في HTML5 فالفرق بسيط ألا وهو حذف الخاصية type امتثالًا لنصيحة مواصفة HTML5:
<script src="javascript.js"></script>
طريقة كتابة سكربت مُضمَّن في المستند:
<script>
  alert("مرحبًا");
</script>

بطاقة العنصر

تصنيفات المحتوى عنصر تنظيمي أو عنصر عادي أو عنصر وصفي.
المحتوى المسموح السكربتات الديناميكية مثل text/javascript.
الوسم المختصر لا يمكن حذف أيّ من وسمَي البداية أو النهاية.
العناصر الأب أي عنصر يقبل المحتوى التنظيمي أو المحتوى الوصفي.
واجهة DOM HTMLScriptElement

دعم المتصفحات

Chrome Firefox Edge Safari Opera
مدعوم مدعوم مدعوم مدعوم مدعوم

الخاصيات

يمكن استخدام الخاصيات العامة في هذا العنصر.

async

خاصية منطقية تُشير إلى أنَّ على المتصفح تنفيذ هذه السكربت بشكل غير متزامن (asynchronously) إن أمكنه ذلك.

لا يجوز استخدام هذه الخاصية إن لم تُحدَّد قيمة للخاصية src (أي أنَّ السكربت مُضمَّن في المستند)، وإن اُستعملت في هذه الحالة فلن يكون لها أي تأثير.

تُنفَّذ السكربتات المُضافة إلى المستند ديناميكيًا بشكلٍ غير متزامن افتراضيًا، لكن لتفعيل تنفيذ السكربتات بشكل متزامن (أي أنَّ تنفيذ السكربتات يكون بنفس ترتيب تحميلها) فاضبط قيمة هذه الخاصية إلى false.

هنالك عدِّة حالات لاستخدام هذه الخاصية والخاصية defer، ويمكن تلخيصها بما يلي:

  • إذا كانت الخاصية async موجودةً، فسيتنفذ هذا السكربت بشكل غير متزامن مع بقية الصفحة (أي أنَّ السكربت سيُنفَّذ أثناء إكمال تفسير بقية الصفحة).
  • إذا لم تكن الخاصية async موجودةً لكن استعملت الخاصية defer، فسيؤجل تنفيذ السكربت إلى حين الانتهاء من تفسير الصفحة.
  • إذا لم تستعمل الخاصية async أو defer، فسينُزَّل السكربت ويُنفَّذ مباشرةً، أي قبل أن يكمل المتصفح تفسير الصفحة.
مثال عن تنفيذ سكربت بشكل غير متزامن (أي سيكمل المتصفح تفسير الصفحة أثناء تنفيذه):
<script src="async.js" async></script>

defer

خاصية منطقية تُشير إلى أنَّ على المتصفح تنفيذ هذه السكربت بعد تفسير بقية المستند.

لا يجوز استخدام هذه الخاصية إن لم تُحدَّد قيمة للخاصية src (أي أنَّ السكربت مُضمَّن في المستند)، وإن اُستعملت في هذه الحالة فلن يكون لها أي تأثير.

لمزيدٍ من المعلومات حول هذه الخاصية، فراجع شرح الخاصية async أعلاه.

مثال عن تأجيل تنفيذ سكربت (أي سينفذه المتصفح بعد الانتهاء من تفسير بقية الصفحة):
<script src="defer.js" defer></script>

integrity

تتضمن بيانات وصفية التي يمكن أن يستعملها المتصفح للتأكد أنَّ المورد الذي نُزِّل لا يحتوي على تعديلات غير متوقعة.

src

تُحدِّد هذه الخاصية رابط URI لسكربت خارجي، ويمكن استخدام هذه الخاصية كبديل عن تضمين السكربتات داخل المستند مباشرةً.

إذا كان للعنصر <script> الخاصية src فلا يجوز تضمين سكربت بين وسم البداية ووسم الإغلاق.

type

تحديد نوع السكربت الذي سيُضمَّن في المستند. يمكن أن تُحذَف هذه الخاصية فذلك سيشير إلى أنَّ هذا السكربت بلغة JavaScript.

تنصح مواصفة HTML5 المطورين بعدم استخدام هذه الخاصية لأن نوع MIME لسكربتات JavaScript معروف. لكن هذه الخاصية كانت تستعمل في ما قد سلف من المتصفحات لتعريف ما هي لغة البرمجة التي كتب فيها السكربت.

language

هذه الخاصية تشبه الخاصية type إذ تُعرِّف ما هي اللغة المستخدمة في كتابة السكربتات، لكن القيم التي تقبلها هذه الخاصية لم تكن معياريةً، لذا أصبحت هذه الخاصية مهملة ويجب استخدام الخاصية type بدلًا منها.

ملاحظات

السكربتات التي ليس لها الخاصية async أو defer إضافةً إلى السكربتات المضمنة في الملف مباشرةً ستُنزَّل وتُنفَّذ مباشرةً قبل أن يكمل المتصفح تفسير الصفحة.

يجب تخديم السكربتات بنوع MIME الخاص بها text/javascript، لكن المتصفحات متساهلة معها ولن تمنع تنفيذ السكربت إلا إذا خُدِّمَ بنوع MIME الخاص بالصور (أي image/*‎) أو نوع MIME الخاص بالفيديو (video/*‎) أو الصوت (audio/*‎) أو text/csv. إذا مُنِعَ تنفيذ السكربت فسيُطلَق الحدث error حتى لو لم يُطلَق الحدث load بعد.

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