ที่ไหนสักแห่งตามแนวที่ฉันรับความคิดที่ใช้ iframes คือ 'การปฏิบัติที่ไม่ดี'
มันเป็นเรื่องจริงเหรอ? ข้อดี / ข้อเสียของการใช้งานคืออะไร?
ที่ไหนสักแห่งตามแนวที่ฉันรับความคิดที่ใช้ iframes คือ 'การปฏิบัติที่ไม่ดี'
มันเป็นเรื่องจริงเหรอ? ข้อดี / ข้อเสียของการใช้งานคืออะไร?
คำตอบ:
เช่นเดียวกับเทคโนโลยีทั้งหมดมันมีอัพและดาวน์ หากคุณใช้ iframe เพื่อไปยังไซต์ที่ได้รับการพัฒนาอย่างเหมาะสมแน่นอนว่ามันเป็นการฝึกฝนที่ไม่ดี อย่างไรก็ตามบางครั้งก็ยอมรับ iframe
หนึ่งในปัญหาหลักของ iframe เกี่ยวข้องกับบุ๊กมาร์กและการนำทาง หากคุณกำลังใช้งานเพื่อฝังหน้าเว็บไว้ในเนื้อหาของคุณฉันคิดว่าไม่เป็นไร นั่นคือสิ่งที่ iframe มีไว้สำหรับ
อย่างไรก็ตามฉันเคยเห็น iframes ใช้ในทางที่ผิดเช่นกัน ไม่ควรใช้เป็นส่วนหนึ่งของเว็บไซต์ของคุณ แต่เป็นเนื้อหาภายในไซต์
โดยปกติหากคุณสามารถทำได้โดยไม่มี iframe นั่นเป็นตัวเลือกที่ดีกว่า ฉันแน่ใจว่าคนอื่น ๆ ที่นี่อาจมีข้อมูลเพิ่มเติมหรือตัวอย่างที่เฉพาะเจาะจงมากขึ้นปัญหาทั้งหมดที่คุณพยายามแก้ไข
ด้วยที่กล่าวว่าถ้าคุณถูก จำกัด HTML และไม่สามารถเข้าถึงแบ็กเอนด์เช่น PHP หรือ ASP.NET ฯลฯ บางครั้ง iframe เป็นตัวเลือกเดียวของคุณ
window.postMessage()
ตัวอย่างเช่นการใช้การปรับขนาดความร่วมมืออัตโนมัติ iframe
พวกเขาไม่ใช่การฝึกฝนที่ไม่ดีพวกเขาเป็นเพียงเครื่องมืออีกอย่างหนึ่งและเพิ่มความยืดหยุ่น
สำหรับใช้เป็นองค์ประกอบหน้ามาตรฐาน ... ดีเพราะเป็นวิธีที่ง่ายและเชื่อถือได้ในการแยกเนื้อหาออกเป็นหลายหน้า โดยเฉพาะอย่างยิ่งสำหรับเนื้อหาที่ผู้ใช้สร้างขึ้นอาจเป็นประโยชน์กับหน้าภายใน "แซนด์บ็อกซ์" ในiframe
มาร์กอัปที่ไม่ดีดังนั้นจะไม่มีผลกับหน้าหลัก ข้อเสียคือถ้าคุณแนะนำการเลื่อนหลายเลเยอร์ (หนึ่งสำหรับเบราว์เซอร์หนึ่งสำหรับiframe
) ผู้ใช้ของคุณจะได้รับความผิดหวัง เช่น adzm กล่าวว่าคุณไม่ต้องการใช้iframe
สำหรับการนำทางหลัก แต่คิดว่าเป็นข้อความ / มาร์กอัปเทียบเท่ากับวิธีที่วิดีโอหรือไฟล์สื่ออื่นจะถูกฝัง
สำหรับเหตุการณ์พื้นหลังสคริปต์โดยทั่วไปแล้วตัวเลือกจะอยู่ระหว่างการซ่อนiframe
และXmlHttpRequest
การโหลดเนื้อหาสำหรับหน้าปัจจุบัน ความแตกต่างคือการiframe
สร้างหน้าโหลดดังนั้นคุณสามารถย้ายไปข้างหน้าและข้างหน้าในแคชเบราว์เซอร์กับเบราว์เซอร์ส่วนใหญ่ โปรดสังเกตว่า Google ซึ่งใช้XmlHttpRequest
ทั่วสถานที่นั้นยังใช้iframe
s ในบางกรณีเพื่ออนุญาตให้ผู้ใช้เลื่อนไปข้างหน้าและย้อนกลับในประวัติเบราว์เซอร์
มันเป็น 'การปฏิบัติที่ไม่ดี' ที่จะใช้พวกเขาโดยไม่เข้าใจข้อเสียของพวกเขา โพสต์ของ Adzm สรุปพวกเขาเป็นอย่างดี
ใน flipside gmail ใช้ iFrames อย่างหนักในพื้นหลังสำหรับคุณสมบัติที่ยอดเยี่ยมบางอย่าง (เช่นการอัปโหลดไฟล์อัตโนมัติ) หากคุณทราบถึงข้อ จำกัด ของ iFrames ฉันไม่เชื่อว่าคุณควรรู้สึกถึงการใช้งานใด ๆ
เมื่อได้ทำงานกับพวกเขาในหลาย ๆ สถานการณ์ฉันคิดว่า iframe นั้นเป็นโปรแกรมเว็บที่เทียบเท่ากับคำสั่ง goto นั่นคือสิ่งที่ต้องหลีกเลี่ยงโดยทั่วไป ภายในเว็บไซต์พวกเขาอาจมีประโยชน์บ้าง อย่างไรก็ตามข้ามไซต์พวกเขามักจะเป็นความคิดที่ดีสำหรับทุกสิ่งยกเว้นเนื้อหาที่ง่ายที่สุด
พิจารณาความเป็นไปได้ ... หากใช้สำหรับเนื้อหาที่กำหนดพารามิเตอร์พวกเขาได้สร้างอินเทอร์เฟซ และในไซต์ระดับมืออาชีพอินเทอร์เฟซนั้นต้องใช้ SLA และการจัดการเวอร์ชันซึ่งเกือบจะไม่สนใจในการออนไลน์
หากใช้สำหรับเนื้อหาที่ใช้งาน - เฟรมที่สคริปต์โฮสต์ - ดังนั้นจะมีข้อ จำกัด สคริปต์ข้ามโดเมน (ต่างกัน) บางคนสามารถถูกแฮ็ก แต่ไม่ค่อยสม่ำเสมอ และหากเนื้อหาที่มีกรอบของคุณจำเป็นต้องมีการโต้ตอบกันมันจะต้องพยายามที่จะทำนอกเหนือจากเฟรม
หากใช้กับเนื้อหาที่ได้รับอนุญาตเว็บไซต์ที่เข้าร่วมจะต้องรับภาระจากความต้องการย้ายข้อมูลการให้สิทธิ์นอกแบนด์ระหว่างโฮสต์
ดังนั้นแม้ว่าจะมีประโยชน์เป็นครั้งคราวภายในเว็บไซต์ แต่ก็ไม่เหมาะสำหรับการผสม คุณดีกว่าที่จะดูพอร์ทัลจริงและพอร์ตเล็ต ที่แย่กว่านั้นคือพวกเขาเป็นที่รักของทุก ๆ คนในเว็บมือสมัครเล่น - ผู้จัดการด้านเทคโนโลยีจำนวนมากได้แอบอ้างพวกเขาว่าเป็นวิธีแก้ปัญหาต่าง ๆ ในความเป็นจริงพวกเขาสร้างมากขึ้น
จากประสบการณ์ของฉันด้านบวกสำหรับ iframe คือเมื่อเรียกรหัสบุคคลที่สามซึ่งอาจเกี่ยวข้องกับการเรียกใช้จาวาสคริปต์ที่เรียกว่า a มีDocument.write();
คำสั่ง ดังที่คุณอาจทราบคำสั่งเหล่านี้ไม่สามารถเรียกใช้แบบอะซิงโครนัสเนื่องจากวิธีการแยกวิเคราะห์ (DOM Parser ฯลฯ ) ตัวอย่างของสิ่งนี้คือhttp://sourceforge.net/projects/phpadsnew/ฉันใช้ iframes เพื่อช่วยให้เว็บไซต์ของเราเร็วขึ้นเนื่องจากมีการเรียก phpadsnews หลายครั้งและไซต์กำลังรอการตอบกลับก่อนที่จะดำเนินการแตกต่างกัน ส่วนต่างๆของหน้า ด้วย iframe ฉันสามารถอนุญาตให้ไซต์แสดงส่วนอื่น ๆ ของหน้าและยังคงเรียกDocument.write()
คำสั่งของ phpads แบบอะซิงโครนัส การป้องกันและการล็อค js
มีประโยชน์สำหรับคน iframes แน่นอน คุณจะวางวิดเจ็ตเครือข่ายสภาพอากาศลงบนหน้าของคุณได้อย่างไร วิธีเดียวที่จะคว้า XML ของพวกเขาและแยกมัน แต่แน่นอนคุณต้องมีเงื่อนไขในการโยนกราฟิกสภาพอากาศที่เลวร้าย ... ไม่คุ้มกับมันมากนัก แต่ก็สะอาดกว่านี้ถ้าคุณมีเวลา
โมเดลเฟรมเซตดั้งเดิม (เฟรมเซตและองค์ประกอบเฟรม) นั้นแย่มากจากมุมมองการใช้งาน IFrame ทำการประดิษฐ์ในภายหลังซึ่งไม่ได้มีปัญหามากเท่ากับรุ่นเฟรมเซตดั้งเดิม แต่มีข้อเสียเปรียบ
หากคุณอนุญาตให้ผู้ใช้นำทางภายใน IFrame ลิงก์และบุ๊กมาร์กจะไม่ทำงานตามที่คาดไว้ (เพราะคุณทำบุ๊กมาร์ก URL ของหน้าเว็บด้านนอก แต่ไม่ใช่ URL ของ iframe)
เมื่อหน้าหลักของคุณโหลดในโปรโตคอล HTTP และบางส่วนของหน้าของคุณจำเป็นต้องทำงานในโปรโตคอล HTTPS, iFrame สามารถเอาชนะ jsonp ได้
โดยเฉพาะอย่างยิ่งถ้า dataType ของคุณไม่ได้เป็น json และจำเป็นต้องแปลบนเซิร์ฟเวอร์เป็น json และแปลบนไคลเอนต์กลับมาเป็นเช่น html ที่ซับซ้อน
ดังนั้นไม่ - iFrame ไม่ใช่ความชั่วร้าย
พวกเขาไม่ได้เลวร้าย แต่มีประโยชน์จริง ๆ ฉันมีปัญหาใหญ่เมื่อไม่นานมานี้ที่ฉันต้องฝังฟีด Twitter ของฉันและมันจะไม่ปล่อยให้ md ทำมันในหน้าเดียวกันดังนั้นฉันจึงวางมันบนหน้าอื่นและวางไว้ใน iframe
มันก็ดีเช่นกันเพราะเบราว์เซอร์ทั้งหมด (และเบราว์เซอร์โทรศัพท์) รองรับ พวกเขาไม่สามารถพิจารณาการปฏิบัติที่ไม่ดีตราบใดที่คุณใช้พวกเขาอย่างถูกต้อง
เป็นที่น่าสังเกตว่า iframe จะไม่คำนึงถึงความเร็วของการเชื่อมต่ออินเทอร์เน็ตของผู้ใช้หรือเนื้อหาของ iframe ของคุณทำให้มีขนาดเล็ก (0.3s หรือมากกว่านั้น) แต่ความเร็วในการดาวน์โหลดหน้าเว็บของคุณช้าลงอย่างเห็นได้ชัด นี่ไม่ใช่สิ่งที่คุณจะเห็นเมื่อทำการทดสอบในเครื่อง ที่จริงแล้วสิ่งนี้เป็นจริงสำหรับองค์ประกอบใด ๆ ที่เพิ่มไปยังหน้า แต่ iframes ดูเหมือนจะแย่ลง
ฉันเห็นว่า IFRAME ใช้อย่างประสบความสำเร็จเป็นวิธีที่ง่ายในการสร้างเมนูบริบทแบบไดนามิก แต่ผู้ชมเป้าหมายของเว็บแอปนั้นเป็นผู้ใช้ Internet Explorer เท่านั้น
ฉันจะบอกว่าทุกอย่างขึ้นอยู่กับความต้องการของคุณ หากคุณต้องการให้หน้าเว็บของคุณทำงานได้ดีเท่าเทียมกันในทุกเบราว์เซอร์ให้หลีกเลี่ยง IFRAME หากคุณกำหนดเป้าหมายไปยังกลุ่มเป้าหมายที่แคบและเป็นที่รู้จัก (เช่นในอินทราเน็ตท้องถิ่น) และคุณเห็นประโยชน์ในการใช้ IFRAME แล้วฉันจะบอกว่าตกลง