لقد قمت بتصفح جافا سكريبت منذ فترة، وشعرت بالرضا عن نفسي في ذلك الوقت. الآن بعد أن أفكر في الأمر، أشعر أنه لا شيء. مهمة اليوم هي دراسة الفصل الخاص بدورة حياة صفحة العميل في asp.net ajax. ومع ذلك، كنت في حيرة من أمري بشأن محتوى هذا الفصل. ولم يذكر أي من هذه الشكوك في الكتاب.
1. ما هي عملية التحميل التفصيلية لصفحة html؟ ما هي أولوية عناصر الصفحة عند التحميل؟
2. نطاق جافا سكريبت ونطاق المتغيرات والعلاقة بين أجزاء البرنامج النصي المختلفة؟
3. ما هي دورة حياة صفحات html؟
هذه الأسئلة ضربت المنزل حقًا بالنسبة لي. بدون فهم هذه الأمور، لا أستطيع رؤية المبادئ الأساسية من خلال إطار عمل asp.net ajax. أنا أعرف ذلك فقط ولكن لا أعرف السبب.
في حالة البحث المكثف عن المعلومات على شبكة الإنترنت. حصلت على بعض الإجابات.
حول تحميل HTML:
بشكل عام، يتم تحميل HTML وتحليله بالترتيب من الأعلى إلى الأسفل، أثناء إنشاء كائنات DOM. أما بالنسبة لما يتم خلطه في HTML:
document.write("xxxx");
<script type="text/javascript" src="aaa.js"></script>
ما هو أمرهم؟ لا يزال الأمر نفسه، إذا واجهت هذه الأشياء عند تحليل HTML، فسوف تتوقف عن تحليل وتنفيذ هذه البيانات التي تم إنشاؤها، وإذا تم إدراج رابط خارجي في المنتصف، فسوف تقوم بتحليل وتنفيذ js المطابق للرابط الخارجي. العبارات التالية لها نتائج مختلفة لمتصفحات مختلفة:
<script type="text/javascript" src="aaa.js"></script>
في أي. لن ينتظر تنزيل aaa.js وتحليله، بل سيُنشئ موضوعًا آخر للتعامل معه، وسيمر الموضوع الرئيسي. ولكن في صص. سينتظر حتى يتم تنزيل aaa.js وتحليله وتنفيذه.
فيما يتعلق بتنفيذ جافا سكريبت، يرجى الاطلاع على المواد المرجعية المرفقة في نهاية هذه المقالة، والتي تحتوي على مناقشة مفصلة.
حول دورة حياة الصفحات في html:
أهم حدثين هما onLoad وonUnLoad. يتم تشغيل onLoad عند تحميل الصفحة. يتم تشغيل onUnLoad بعد تدمير DOM الخاص بالصفحة. ومع ذلك، يعتبر onLoad خاصًا بعض الشيء، يرجى أيضًا الاطلاع على المواد المرجعية المرفقة في نهاية هذه المقالة. تأكد من لفت الانتباه.
لقد نظرت إلى كود مصدر HTML للعديد من المواقع ووجدت الكود التالي:
<div><script src="/ggjs/view1602_w.js"></script></div>
هذا هو الرمز الخاص بموقع ويب لعرض الإعلانات على الصفحة. على مواقع الويب المحلية، تستخدم الإعلانات المصوّرة عادةً إطارات iframe لتقديم صفحات الجهات الخارجية، ولكن يتم إنشاؤها هنا مباشرةً باستخدام شرائح جافا سكريبت. لاحقًا، نظرت إلى كود html الذي أنشأته مدونة 163، وكان ذلك غير طبيعي. يحتوي كود html بأكمله على رف واحد فقط، ويتم إنشاء جميع الصفحات من خلال js. رأيت أنه تم تقديم العديد من ملفات js خلف الصفحة، وأخيرًا تم استدعاء وظيفة initAll في نهاية الصفحة. لم أدرس كود js الخاص به بعناية وأظن أنه يضع جميع وظائف طبقة العرض التقديمي في ملف js الخاص بالعميل. جانب الخادم عبارة عن عدد قليل من رفوف الصفحات والعديد من خدمات الويب. انها حقا لالتقاط الأنفاس.
فيما يتعلق بحدث يؤدي إلى وظائف استجابة متعددة:
لقد فكرت ذات مرة في تنفيذ شيء مشابه للمفوض في C#. يمكن ربط أحداث JavaScript بأكثر من وظيفة واحدة. يمكن تشغيل قائمة الأحداث في وقت واحد. لقد كنت أدرس asp.net ajax هذه الأيام وهناك حزمة لهذا الغرض.
في asp.net ajax، يمكن تغليف عنصر dom في كائن Sys.UI.DomElement في asp.net ajax. ثم يمكنك استخدام أساليبها: addHandler() وaddHandlers() وremoveHander() لتشغيل قائمة الأحداث. كيف مريحة. لم أفهم هذا المبدأ تمامًا في ذلك الوقت. رأيت اليوم قطعتين من التعليمات البرمجية في المادة المرجعية أدناه، مما جعلني أفهم التفاصيل تمامًا:
1. استخدم الواجهة في dom 2:
انسخ رمز الكود كما يلي:
إذا (document.addEventListener){
window.addEventListener('load',f,false);
window.addEventListener('load',f1,false);
…
}آخر{
window.attachEvent('onload',f);
window.attachEvent('onload',f1);
…
}
اتضح أن هذا المفهوم موجود بالفعل في DOM. وعندها فقط عرفت. يبدو أنه لا تزال هناك أشياء كثيرة لا أفهمها بشأن دوم.
ثانيا، يتم تنفيذ هذه الطريقة يدويا بحتة. انظر الكود أدناه:
انسخ رمز الكود كما يلي:
وظيفة addLoadEvent(func) {
فار oldonload = window.onload;
إذا (نوع النافذة.onload!= 'وظيفة') {
window.onload = func;
} آخر {
نافذة.onload = وظيفة () {
إذا (أولدونلود) {
oldonload();
}
وظيفة();
}
}
}
تمت كتابة هذه الوظيفة بذكاء شديد. استخدم وظائف مجهولة لإنجازها!