แนะนำการอ่าน:
วิธีแก้ปัญหาการโหลด js iframe ช้าๆ
ในโครงการคุณมักจะต้องเพิ่ม iframes แบบไดนามิกจากนั้นทำการดำเนินการที่เกี่ยวข้องกับ iframes ที่เพิ่มเข้ามา บ่อยครั้งที่รหัสที่ตามมาถูกดำเนินการก่อนที่จะเพิ่ม iframe ดังนั้นบางสิ่งที่คุณเขียนจะไม่ปรากฏขึ้นเลย ในเวลานี้เราต้องพิจารณาว่าเราสามารถรอได้หรือไม่จนกว่า iframe จะโหลดก่อนที่จะดำเนินการต่อไป แน่นอนว่าเบราว์เซอร์ต่าง ๆ ได้พิจารณามานานแล้วสำหรับเราดูด้านล่าง:
เช่นเบราว์เซอร์
แต่ละโหนด elem ใน IE จะมีเหตุการณ์ onreadystatechange เหตุการณ์นี้จะถูกกระตุ้นทุกครั้งที่มีการส่งเนื้อหา Elem เพื่อเปลี่ยน ตัวอย่างเช่นเนื้อหาจะถูกโหลดและโหลดหลังจากโหลดเนื้อหา เนื้อหาถูกโหลดสำเร็จจะถูกเรียกใช้ ฟังก์ชั่นนี้ยังต้องมีการประสานงานกับ ReadyState นี่คือคุณสมบัติที่เป็นเจ้าของโดย Elem ใน IE เพื่อดูสถานะของแต่ละทริกเกอร์
// ก่อนเพิ่ม onreadystatechangeiframe.attachevent ("onreadystatechange", function () {// เหตุการณ์นี้จะถูกกระตุ้นเมื่อเนื้อหาไม่ได้โหลดดังนั้นเราต้องตัดสินรัฐ // บางครั้งมันแปลกและ Readystate จะข้ามเสร็จสมบูรณ์ "โหลด") {// รหัสสามารถดำเนินการได้ที่นี่และหมายความว่าการโหลดเสร็จสมบูรณ์แล้ว // เหตุการณ์ iframe.detachevent ("onreadystatechange", arguments.callee); // นี่คือฟังก์ชั่นการโทรกลับ}});เบราว์เซอร์อื่น ๆ (Firefox, Opera, Chrome ฯลฯ )
สำหรับเบราว์เซอร์ที่ไม่ใช่อื่น ๆ , Firefox, Opera, Chrome และ IFRames อื่น ๆ จะมีเหตุการณ์ ONLOAD ตราบใดที่เหตุการณ์นี้ถูกทริกเกอร์ก็หมายความว่าเนื้อหาชื่อได้รับการโหลด
iframe.addeVentListener ("โหลด", function () {// รหัสสามารถดำเนินการได้ที่นี่และหมายความว่าการโหลดเสร็จสมบูรณ์แล้วสิ่งนี้ removeEventListener ("โหลด", arguments.call, false); // นี่คือฟังก์ชันการโทรกลับ}, เท็จ);มาสรุปกันเถอะ
ถ้า (iframe.attachevent) {iframe.attachevent ("onreadystatechange", function () {// เหตุการณ์นี้จะถูกกระตุ้นเมื่อเนื้อหาไม่ได้โหลดดังนั้นเราต้องตัดสินสถานะ // บางครั้ง {// รหัสสามารถดำเนินการได้ที่นี่และหมายความว่าการโหลดเสร็จสมบูรณ์แล้ว // เหตุการณ์ iframe.detachevent ("onreadystatechange", arguments.callee); // นี่คือฟังก์ชั่นการเรียกกลับ}}); this.removeeVentListener ("โหลด", arguments.call, false); // นี่คือฟังก์ชันการโทรกลับ}, false);}หมายเหตุ: ฟังก์ชั่นข้างต้นจะต้องวางหลังจาก iframe เป็นภาคผนวกกับร่างกายมิฉะนั้นจะไม่ถูกเรียกใช้
เนื้อหาข้างต้นเป็นวิธีการของ JS เพื่อตรวจสอบว่าตัวแก้ไข IFRAME นั้นสำเร็จหรือไม่ ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน!