หลายๆ คนมีความคิดมาโดยตลอดว่าคงจะดีไม่น้อยหากพวกเขาสามารถใช้งาน iframe ได้ตามต้องการ ด้วยวิธีนี้ เพจแบบคงที่มีความสามารถในการปรับใช้ เค้าโครงหลายเพจแบบรวม ที่เทียบเท่ากับการรวมและต้องการในเพจไดนามิกพื้นหลัง php, jsp และ asp
ด้วยความช่วยเหลือของ Javascript เราสามารถโหลดเนื้อหาของหน้า html แบบไดนามิกที่ชี้โดยแอตทริบิวต์วัตถุ iframe src เหมือนพื้นหลัง การดำเนินการดังกล่าวจำเป็นต้องจัดเตรียมสองเพจ โดยหนึ่งเพจคือเพจที่มี iframe ตั้งอยู่ ( ชื่อเพจ: iPage.html ) และอีกเพจคือเพจที่ชี้ไปโดยแอตทริบิวต์ iframe src ( ชื่อเพจ: srcPage.html )
iPage.html, dom ใน <body>:
,<body>in
เรามาหารือเกี่ยวกับวิธีใช้งานสองเพจข้างต้นด้วย JS ภายใต้ IE แล้ว หารือเกี่ยวกับวิธีการของ Firefox และสุดท้ายให้ความเข้ากันได้กับ IE และ Firefox วิธีการของเบราว์เซอร์ในการใช้งานวัตถุ iframe
ทุกคนรู้ดีว่า iframe เป็นแท็ก HTML ที่ไม่ได้มาตรฐาน เป็นแท็กหลายรูปแบบที่เปิดใช้งานโดยเบราว์เซอร์ IE ต่อมา Mozilla ก็สนับสนุนแท็กนี้ด้วย (ซุบซิบ อิอิ)
1. IE ได้รับมันผ่าน document.frames["IframeName"] ตัวอย่าง: เรา ส่งออกเนื้อหาของ h1 ใน srcPage.html ใน iPage.html JS เป็นดังนี้
คุณจะพบว่าการเพิ่มโค้ดลงในเพจดูเหมือนจะไม่แสดงผลสิ่งที่ต้องการ ทำไม? ฉันยังคิดไม่ออก ฉันเพิ่งเพิ่ม window.onload เป็นประจำและผลลัพธ์จะปรากฏขึ้น (หมายเหตุ: รหัส JS ถูกเขียนลงในเหตุการณ์นี้) ใครรู้เกี่ยวกับเรื่องนี้บอกฉันได้ไหม เหตุใดหลังจากการเปลี่ยนแปลง โค้ดจึงมีเอาต์พุตภายใต้ IE แต่ไม่
คือ อีกวิธีหนึ่งคือ contentWindow เพื่อ
วิธีนี้ผ่านการทดสอบของ ie6, ie7, firefox2.0 และ firefox3.0 เฮ้-เฮ้ (หลังจากตรวจสอบออนไลน์แล้ว ฉันพบช่องโหว่บัฟเฟอร์ล้นใน Mozilla Firefox iframe.contentWindow.focus ซึ่งเสี่ยงต่อการโจมตีด้วยการแทรกสคริปต์
ต่อมาฉันได้ยินมาว่าสิ่งนี้สามารถป้องกันได้ในเบื้องหลัง และฉันก็โล่งใจ อย่างไรก็ตาม ฉันยังคง หวังว่า Firefox เวอร์ชันใหม่จะสามารถแก้ไข
ได้
เข้าถึงได้ผ่าน contentWindow โหนดก็เหมือนเดิม
การเข้าถึงออบเจ็กต์เอกสารของ iframe ผ่าน IFrameElmRef.contentDocument
ขณะนี้มีวิธีที่เข้ากันได้กับเบราว์เซอร์ทั้งสองนี้ ซึ่งก็คือการใช้เมธอด contentWindow
เฮ้เฮ้! ฉันสามารถใช้งาน iframe ได้ตามต้องการหรือไม่? หากคุณยังรู้สึกไม่สบายใจ คุณสามารถเขียนเนื้อหาใน iframe ใหม่ได้
คุณสามารถเขียนเนื้อหาใหม่ใน iframe ได้ด้วย designMode (การตั้งค่าเอกสารเป็นโหมดการออกแบบที่แก้ไขได้) รหัส:
us/ Library/ms533720(VS.85).aspx
firebug ทดสอบประสิทธิภาพของโค้ดด้านบน ดังแสดงในรูป
ใส่ความคิดเห็น iObj.document.designMode = 'On';
iObj.document.contentEditable = true
เอฟเฟกต์ไม่มีการเปลี่ยนแปลง และประสิทธิภาพด้านเวลาก็เกือบสามเท่าของก่อนคำอธิบายประกอบ เฮ้-เฮ้ วัตถุทั้งสองนี้อ้างอิงถึงวิธีการเขียนของบางคนบนอินเทอร์เน็ตเพื่อเขียนเนื้อหาใหม่ใน iframe จริงๆ แล้ว ไม่จำเป็นต้องใช้ designMode และ contentEditable เว้นแต่จะมีความต้องการอื่นๆ
ด้วยหลักการข้างต้น มันค่อนข้างง่ายที่จะนำไปใช้ เพียงตั้งค่าความสูงของ iframe เป็นค่าความสูงของเอกสารที่อยู่ข้างใน รหัส
เนื่องจากศัพท์ทางเทคนิคของเว็บนี้ เฮ้ เหม็น!
เอกสารอ้างอิง:
https://developer.mozilla.org/cn/Migrate_apps_from_Internet_Explorer_to_Mozilla
http://msdn.microsoft.com/en-us/library/ms533690(VS.85).aspx