ฉันใช้งาน JavaScript มาระยะหนึ่งแล้ว และฉันก็รู้สึกดีกับตัวเองในตอนนั้น ตอนนี้ฉันคิดเกี่ยวกับมัน ฉันรู้สึกเหมือนว่ามันไม่มีอะไร งานของวันนี้คือการศึกษาบทเกี่ยวกับวงจรชีวิตของเพจไคลเอนต์ใน asp.net ajax อย่างไรก็ตาม ฉันรู้สึกสับสนเล็กน้อยกับเนื้อหาของบทนี้ ไม่มีการกล่าวถึงข้อสงสัยเหล่านี้ในหนังสือ
1. ขั้นตอนการโหลดหน้า html อย่างละเอียดเป็นอย่างไร? ลำดับความสำคัญขององค์ประกอบของหน้าเมื่อโหลดคืออะไร?
2. ขอบเขตของ JavaScript ขอบเขตของตัวแปร และความสัมพันธ์ระหว่างส่วนสคริปต์ต่างๆ
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 ดาวน์โหลดและแยกวิเคราะห์ โดยจะสร้างเธรดอื่นเพื่อจัดการ และเธรดหลักจะส่งต่อ แต่ใน ff. มันจะรอจนกว่า aaa.js จะถูกดาวน์โหลด แยกวิเคราะห์ และดำเนินการ
เกี่ยวกับการดำเนินการของจาวาสคริปต์ โปรดดูเอกสารอ้างอิงที่แนบมาท้ายบทความนี้ ซึ่งมีการอภิปรายโดยละเอียด
เกี่ยวกับวงจรชีวิตของเพจใน html:
เหตุการณ์ที่สำคัญที่สุดสองเหตุการณ์คือ onLoad และ onUnLoad onLoad จะถูกทริกเกอร์เมื่อมีการโหลดเพจ onUnLoad จะถูกทริกเกอร์หลังจาก DOM ของเพจถูกทำลาย อย่างไรก็ตาม onLoad มีความพิเศษเล็กน้อย โปรดดูเอกสารอ้างอิงที่แนบมาท้ายบทความนี้ด้วย อย่าลืมดึงดูดความสนใจ
ฉันดูซอร์สโค้ด html ของหลาย ๆ ไซต์แล้วพบโค้ดต่อไปนี้:
<div><script src="/ggjs/view1602_w.js"></script></div>
นี่คือโค้ดสำหรับเว็บไซต์เพื่อแสดงโฆษณาบนเพจ บนเว็บไซต์ในประเทศ โฆษณาแบบดิสเพลย์มักจะใช้ iframe เพื่อแนะนำเพจของบุคคลที่สาม แต่ที่นี่โฆษณาเหล่านี้สร้างขึ้นโดยตรงโดยใช้เซ็กเมนต์ JavaScript ต่อมาฉันดูโค้ด 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('โหลด',f,false);
window.addEventListener('โหลด',f1,false);
-
}อื่น{
window.attachEvent('onload',f);
window.attachEvent('onload',f1);
-
-
ปรากฎว่ามีแนวคิดนี้มีอยู่แล้วใน DOM ตอนนั้นฉันเพิ่งรู้ ดูเหมือนว่ายังมีอีกหลายสิ่งที่ฉันไม่เข้าใจเกี่ยวกับดอม
ประการที่สอง วิธีนี้ดำเนินการด้วยมือล้วนๆ ดูรหัสด้านล่าง:
คัดลอกรหัสรหัสดังต่อไปนี้:
ฟังก์ชั่น addLoadEvent (func) {
var oldonload = window.onload;
ถ้า (typeof window.onload != 'ฟังก์ชั่น') {
window.onload = func;
} อื่น {
window.onload = ฟังก์ชั่น () {
ถ้า (oldonload) {
oldonload();
-
ฟังก์ชั่น();
-
-
-
ฟังก์ชั่นนี้เขียนอย่างชาญฉลาดมาก ใช้ฟังก์ชันที่ไม่ระบุชื่อเพื่อทำให้เสร็จ!