العديد من الأشخاص ماهرون بالفعل في استخدام جافا سكريبت، ولكن عندما يرون التأجيل، قد لا يعرفون الغرض من استخدامه. وقد واجه العديد من الأشخاص أيضًا مثل هذه المشكلة، ويحتاجون إلى تنفيذ js أخرى مباشرة ومعالجة كائنات DOM والإبلاغ عن الكائن دائمًا؛ لم يتم العثور على خطأ، كما يعلم الجميع، والسبب هو أن الصفحة لم يتم تحميلها بعد، ولا يزال كائن تشغيل js قيد التنزيل. لكن الكثير من الناس لا يعرفون أن إضافة علامة التأجيل يمكن أن يحل هذه المشكلة بسهولة.
<script src="../CGI-bin/delscript.js" تأجيل></script>
وظيفة التأجيل هي تنفيذ البرنامج النصي بعد تحميل المستند لتجنب مشكلة عدم العثور على الكائن --- مشكلة صغيرة
انسخ رمز الكود كما يلي:
<button id="myButton" onclick="alert('ok')">اختبار</button>
<النص البرمجي>
myButton.click();
</script>
<النص البرمجي>
myButton.click();
</script>
<button id="myButton" onclick="alert('ok')">اختبار</button>
<تأجيل البرنامج النصي>
دالة document.body.onload() {
تنبيه (document.body.offsetHeight)؛
}
</script>
إضافة التأجيل يعني أنه سيتم تنفيذه بعد تحميل الصفحة بالكامل، وهو ما يعادل window.onload، لكنه أكثر مرونة من window.onload في التطبيق!
التأجيل هو "البطل المجهول" في قوة البرمجة النصية. فهو يخبر المتصفح أن مقطع البرنامج النصي يحتوي على تعليمات برمجية لا يلزم تنفيذها على الفور، ويمكن أن يؤدي استخدامه مع سمة SRC إلى تنزيل هذه البرامج النصية في الخلفية، ويتم عرض المحتوى الموجود في المقدمة للمستخدم بشكل طبيعي.
--ولكن قم بتنفيذ البرنامج النصي بعد تحميل المستند
يرجى ملاحظة نقطتين:
1. لا تستدعي الأمر document.write في مقطع نصي من نوع التأجيل، لأن document.write سينتج تأثير إخراج مباشر.
2. علاوة على ذلك، لا تقم بتضمين أي متغيرات أو وظائف عامة ليتم استخدامها بواسطة البرنامج النصي للتنفيذ الفوري في مقطع البرنامج النصي المؤجل.
إحدى الطرق الشائعة لتحسين الأداء هي تعيين سمة "التأجيل" في علامة <SCRIPT> عندما لا يلزم تشغيل البرنامج النصي على الفور. (البرنامج النصي المباشر غير موجود في كتلة دالة، لذلك سيتم تنفيذه أثناء عملية التحميل.) بعد تعيين السمة "التأجيل"، لا يتعين على IE الانتظار حتى يتم تحميل البرنامج النصي وتنفيذه. بهذه الطريقة سيتم تحميل الصفحة بشكل أسرع. بشكل عام، هذا يعني أيضًا أنه من الأفضل وضع البرامج النصية الفورية في كتل الوظائف والتعامل مع الوظيفة في معالج التحميل للمستند أو الكائن الأساسي. تكون هذه الخاصية مفيدة عندما تكون هناك بعض البرامج النصية التي يلزم تنفيذها بناءً على إجراءات المستخدم - مثل النقر فوق زر أو تحريك الماوس إلى منطقة معينة. ولكن عندما تكون هناك بعض البرامج النصية التي يجب تنفيذها أثناء أو بعد تحميل الصفحة، فإن فوائد استخدام سمة التأجيل ليست كبيرة.
سمة التأجيل في البرنامج النصي خاطئة بشكل افتراضي. وفقًا للوصف الموجود في دليل برمجة DHTML، تتم كتابة سمة التأجيل على النحو التالي:
يمكن أن يؤدي استخدام السمة في وقت التصميم إلى تحسين أداء تنزيل الصفحة لأن المتصفح لا يحتاج إلى تحليل البرنامج النصي وتنفيذه ويمكنه الاستمرار في تنزيل الصفحة وتحليلها بدلاً من ذلك.
بمعنى آخر: إذا قمت بإضافة سمة التأجيل عند كتابة برنامج نصي، فلن يضطر المتصفح إلى معالجته فورًا عند تنزيل البرنامج النصي، ولكنه يستمر في تنزيل الصفحة وتحليلها، مما سيؤدي إلى تحسين أداء التنزيل.
هناك العديد من هذه الحالات. على سبيل المثال، إذا قمت بتعريف الكثير من متغيرات JavaScript، أو قمت بكتابة الكثير من البرامج النصية في الملف المرجعي (.inc) التي تحتاج إلى معالجة، فيمكنك أيضًا إضافة سمة التأجيل إلى هذه البرامج النصية، مما سيساعد بالتأكيد على تحسين الأداء .
الأمثلة هي كما يلي:
انسخ رمز الكود كما يلي:
<script language="javascript" تأجيل>
كائن فار = كائن جديد ()؛
....
</script>
نظرًا لأن السمة المؤجلة تكون افتراضيًا خطأ، فهنا
<script language="javascript" تأجيل>
الإعلان بشكل صريح عن سمة التأجيل يعادل
<script language="javascript" defer=true>
بعد الإعلان عن سمة التأجيل، تحتاج إلى تحديد ما إذا كانت المتغيرات الأخرى تشير إلى المتغيرات الموجودة في كتلة البرنامج النصي المؤجل، وإلا سيحدث خطأ في البرنامج النصي.