ทำไมเฟรมจึงเลิกใช้ใน HTML5 แต่ไม่ใช่ iFrames


67

ทำไมเฟรมจึงเลิกใช้ใน HTML5 แต่ไม่ใช่ iFrames ท้ายที่สุดแล้วแทบจะไม่มีความแตกต่างระหว่างสองสิ่งนี้ ในหลาย ๆ กรณีที่ใช้อย่างใดอย่างหนึ่งของพวกเขาจะให้ผลลัพธ์เดียวกัน (ให้อภัยฉันถ้าฉันผิด)?



ขอบคุณสำหรับการเชื่อมโยง แต่สิ่งที่แตกต่างกันเล็กน้อยระหว่างสองสิ่งนี้คือว่า iframe ไม่ได้รับการคัดค้าน

1
เพราะเฟรมเป็นความคิดที่แย่มากตั้งแต่เริ่มต้น แต่ iframes มีกรณีการใช้งานที่ถูกกฎหมายหรือไม่?
GordonM

บน Stack Overflow: "ไม่รองรับเฟรมใน HTML5 แต่ไม่ใช่ iFrames "
WBT

คำตอบ:


81

โพสต์ของคุณมีความเข้าใจผิดสองอย่าง ก่อนอื่นองค์ประกอบframeและframesetไม่ได้คัดค้านใน HTML5 พวกเขาล้าสมัย (กล่าวคือพวกเขาถูกลบทั้งหมด)

ประการที่สองframeและframesetองค์ประกอบนั้นไม่เหมือนกันกับiframeองค์ประกอบและไม่ให้ผลลัพธ์เดียวกัน:

  • framesetองค์ประกอบแทนที่องค์ประกอบร่างกายในหน้าเว็บเป็นวิธีที่จะรวมถึงรูปแบบเอกสารที่แตกต่างกันสำหรับหน้าเว็บ: พวกเขากำลังที่ไม่ดีสำหรับการใช้งานและการเข้าถึงและสิ่งที่พวกเขาตั้งใจที่จะประสบความสำเร็จได้ถูกแทนที่อย่างสมบูรณ์โดย CSS และการพัฒนาด้านเซิร์ฟเวอร์แพร่หลาย

  • ในทางกลับกันiframeองค์ประกอบจะไม่แทนที่เนื้อความของหน้า มันทำหน้าที่เป็นวิธีการรวมบริบทการสืบค้นใหม่ที่ฝังอยู่ในบล็อกของเนื้อหา มันไม่ได้ประสบปัญหาการใช้งานหรือปัญหาการช่วยการเข้าถึงเช่นเดียวกับตัวแบบ frameset และใช้เกือบทุกที่ที่ต้องการรวมบริบทการสืบค้นที่ฝังตัว (วิดเจ็ตเป็นตัวอย่างที่อุดมสมบูรณ์ที่สุด) 1

iframeใน HTML5 ยังใช้เวลาในคุณลักษณะเพิ่มเติมในการที่จะสามารถทดลองใช้ผลิตภัณฑ์ที่ช่วยให้เอกสารของผู้ปกครองในการตัดสินใจสิ่งที่ได้รับการดำเนินการภายใน วิธีนี้ช่วยให้การวัดความปลอดภัยสำหรับเอกสารหลัก (และผู้เยี่ยมชมเอกสารหลัก) เมื่อฝังเนื้อหาที่ไม่น่าเชื่อถือ


หมายเหตุ

หมายเหตุ 1:objectองค์ประกอบค่อนข้างคาบเกี่ยวกับiframeองค์ประกอบ แต่มันก็มีรูปแบบที่แตกต่างกันเนื้อหา (ซึ่งมีวัตถุประสงค์หลักสำหรับปลั๊กอิน) มีชุดของตัวเองคำเตือนและไม่ได้มี sandboxing แอตทริบิวต์iframeองค์ประกอบมี


8
ทำไมองค์ประกอบเฟรมเซตจึงไม่ดีสำหรับ "การใช้งาน" และ "การช่วยสำหรับการเข้าถึง" แต่องค์ประกอบ iframe ไม่ใช่
meriton - เมื่อโจมตี

18
@meriton ชุดเฟรมสร้างหน้าเอกสารหลายหน้าทั้งหมดที่มีลำดับความสำคัญเท่ากัน: สิ่งนี้ทำให้เกิดความท้าทายสำหรับโปรแกรมอ่านหน้าจอที่ไม่ทราบว่าจะเน้นเอกสารใดในเวลาใดก็ได้ ในทางกลับกันองค์ประกอบของ iframe นั้นจะถูกฝังลงในหน้าเดียว: มันไม่แตกต่างจากการมีภาพที่ฝังอยู่

9
ความท้าทายสำหรับโปรแกรมอ่านหน้าจอ: คนตาบอดที่ฉันพูดด้วยทุกคนกล่าวว่าพวกเขาชอบการนำทางที่ติดอยู่ในเฟรมที่แยกต่างหาก (ไม่ใช่ iFrame) เพราะพวกเขาสามารถเพิกเฉยได้และอ่านมันเมื่อพวกเขาต้องการเท่านั้น ผู้ร้ายที่แท้จริงสำหรับโปรแกรมอ่านหน้าจอคือ Javascript และ AJAX ซึ่งทำให้หน้าเว็บใช้งานไม่ได้กับโปรแกรมอ่านหน้าจอปัจจุบัน (ข้อมูลของฉันมีอายุประมาณ 10 เดือน) ประสบการณ์ส่วนตัวของฉันกับโปรแกรมอ่านหน้าจอรองรับสิ่งนี้
GlenPeterson

4
ฉันสงสัยว่าถ้ามีการยืนยันการเข้าถึงบ่อยครั้งจำนวนมากในปี 2548 นั้นไม่ได้มีการปรับปรุงเลย ขอบคุณสำหรับความขัดแย้งที่
Erik Reppen

1
@GlenPeters บนเอฟเฟกต์เดียวกันโดยไม่มีองค์ประกอบเฟรมสามารถทำได้โดยใช้ CSS เพื่อทำให้องค์ประกอบบล็อกคงที่ในวิวพอร์ต นั่นเป็นวิธีที่ควรทำถ้าคุณต้องการการนำทางแบบนั้น มันสมเหตุสมผลมากขึ้น
netrox

8

Frames (frameset) ทำหน้าที่เป็นเอกสาร มันถูกลบเพราะมันทำลายโครงสร้างเอกสาร HTML และการนำทาง เช่น. คุณมีลิงค์ในเฟรมหนึ่งเนื้อหาในอีกอันคุณไม่สามารถเปิดลิงค์จากหน้าในหน้าต่างใหม่คุณไม่สามารถลิงค์ไปยังหน้าย่อยเฉพาะเป็นต้น

ในทางตรงกันข้าม iframe จะไม่ทำลายสิ่งใดหากใช้อย่างถูกต้องเพราะมันหมายถึงเนื้อหาของแซนด์บ็อกซ์ (เช่นโฆษณา)


7

เฟรมเซตมักจะใช้ในวิธีที่พวกเขาทำลายหลักการพื้นฐานของเว็บ - ว่าแต่ละเอกสารมี URL เดียว สิ่งนี้นำไปสู่ปัญหาเกี่ยวกับการเชื่อมโยงที่คั่นหน้าเครื่องมือค้นหา ฯลฯ

การใช้งานเฟรมเซตทั่วไปจะเป็นเฟรมที่ด้านบนที่มีโลโก้หรือส่วนหัวเฟรมที่ด้านข้างพร้อมเมนูและเฟรมเนื้อหา แต่เครื่องมือค้นหาจัดทำดัชนีหน้าเว็บแต่ละหน้าดังนั้นเมื่อคุณพบหน้าเว็บบางหน้าใน Google มันจะลิงก์ไปยังหน้าเนื้อหาโดยตรงโดยไม่มีเฟรมเซตดังนั้นคุณจึงสูญเสียการนำทาง ปัญหาเกี่ยวกับลิงก์และบุ๊กมาร์กคือโดยทั่วไปแล้วคุณต้องการเชื่อมโยงหรือทำบุ๊กมาร์กหน้าเนื้อหาเฉพาะภายในเฟรมเซตโดยไม่สูญเสียชุดเฟรม ไม่มีวิธีง่ายๆในการทำเช่นนั้น

เหตุผลที่เฟรมเซตเริ่มได้รับความนิยมในอันดับแรกคือเนื่องจากอนุญาตให้ส่วนหัวและเมนูที่มีตำแหน่งคงที่พร้อมด้วยพื้นที่เนื้อหาเลื่อน แต่นั่นสามารถทำได้ง่ายขึ้นด้วย CSS วันนี้ นอกจากนี้เฟรมยังอนุญาตให้คุณใช้องค์ประกอบทั่วไปเช่นโลโก้และเมนูในหลาย ๆ หน้าโดยไม่ต้องใช้การเข้ารหัสฝั่งเซิร์ฟเวอร์ นี่เป็นข้อได้เปรียบในเวลาที่การเข้ารหัสฝั่งเซิร์ฟเวอร์นั้นน่าเบื่อและเกิดข้อผิดพลาดได้ง่าย (เช่นสคริปต์ CGI) และโฮสต์จำนวนมากไม่อนุญาตให้ใช้สคริปต์ฝั่งเซิร์ฟเวอร์เลย วันนี้ด้วย Content Management Systems (CMS) และแพลตฟอร์มฝั่งเซิร์ฟเวอร์ที่ดีกว่านี้จัดการได้ดีกว่าในฝั่งเซิร์ฟเวอร์

ดังนั้นโดยทั่วไปไม่มีข้อได้เปรียบในการใช้ frameset ปัญหามากมาย

IFrames สามารถใช้แบบเดียวกับที่ใช้ framesets และในกรณีนี้พวกเขายังนำไปสู่ปัญหาเดียวกัน แต่ก็มีการใช้ iframe ที่ถูกกฎหมายจำนวนมากซึ่งไม่นำไปสู่ปัญหาเดียวกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.