เหตุใดจึงต้องใช้ X-UA-Compatible IE = Edge อีกต่อไป


96

เมื่อเร็ว ๆ นี้ฉันได้เรียนหลักสูตรออนไลน์หลายหลักสูตรและยังเห็นผู้สอนบางคนเพิ่มเมตาแท็กต่อไปนี้ที่ด้านบนของเอกสารโดยค่าเริ่มต้น:

<meta http-equiv="X-UA-Compatible" content="IE=edge">

ความคิดนี้ดูเหมือนจะสำคัญและมีประโยชน์พอ<meta charset="UTF-8">

แต่ทำไม?

ตามเอกสาร Modern.ie ของ Microsoft คือ "แนวทางปฏิบัติที่ดีที่สุด" ซึ่ง "ทำให้มั่นใจได้ว่า Internet Explorer จะใช้เครื่องมือล่าสุด" โอเคยุติธรรมพอ

แต่ถ้าคุณทำตามแผนภาพการไหลใน MSDNมันแสดงให้เห็นชัดเจนว่าเป็นเอกสารโดยไม่ต้อง `ข้อมูล X-UA-เข้ากันได้จะถูกส่งต่อไปยังผู้ใช้ที่ "เข้ากันได้ดู" ค่าและถ้าที่ไม่ได้ตั้งค่าแล้วก็เป็นไปตามประกาศ! DOCTYPE

กล่าวอีกนัยหนึ่งเว้นแต่ผู้ใช้จะมีการตั้งค่ามุมมองที่เข้ากันได้IE ก็จะทำตาม! DOCTYPE ของคุณและใช้โหมดมาตรฐานล่าสุดของเบราว์เซอร์ของคุณในการแสดงผลต่อไป ... ไม่จำเป็นต้องมีX-UA-Compatible IE=Edgeคำสั่งเลย

ตามที่ MSDN กล่าวว่า: " ใช้การประกาศประเภทเอกสาร HTML5 เพื่อเปิดใช้งานโหมดขอบ "

ดังนั้นในสถานการณ์ใดที่X-UA-Compatible IE=Edgeจำเป็น?

คำตอบ:


154

ดังที่คำตอบของ @ David ชี้ให้เห็นเว้นแต่คุณจะโฮสต์ไซต์ในโซน "อินทราเน็ตเฉพาะที่" มีเหตุผลน้อยมากที่จะรวม<meta http-equiv="X-UA-Compatible" content="IE=edge">ไว้ในหน้าเว็บของคุณและ (ตามคำแนะนำแนวทางปฏิบัติที่ดีที่สุดของ Microsoft ) ก็ไม่มีเหตุผลที่จะรวมไว้ใน HTML (คุณควรวางไว้ในการกำหนดค่าเซิร์ฟเวอร์หรือส่วนหัวของไซต์ไม่ใช่ใน HTML เอง)

หากคุณกำลังพิจารณาใช้X-UA-Compatibleที่ใดก็ได้ในโปรเจ็กต์ของคุณคุณควรจำไว้ว่ามุมมองความเข้ากันได้จะมีผลกับ IE8, 9 และ 10 เท่านั้นซึ่งได้รับการแนะนำใน IE8 และถูกปิดใช้งานใน IE11

โปรดทราบว่า IE11 เป็นเวอร์ชันเดียวที่ได้รับการสนับสนุนอย่างเป็นทางการในขณะนี้ เวอร์ชันเก่าทั้งหมดควรได้รับการพิจารณาว่าไม่ปลอดภัย

หากนั่นไม่ใช่เหตุผลเพียงพอที่จะโน้มน้าวให้คุณไม่ใช้มันให้พิจารณาว่า Microsoft ระบุว่าIE8 ขึ้นไปแล้วแสดงผลในโหมดมาตรฐานโดยอัตโนมัติเมื่อมี<!DOCTYPEอยู่ทำให้ไม่มีจุดหมายมากยิ่งขึ้น

คุณสามารถดูโฟลว์ที่ IE ใช้ในการตัดสินใจว่าจะใช้โหมดเอกสารด้วยตัวเอง:

ป้อนคำอธิบายภาพที่นี่ ป้อนคำอธิบายภาพที่นี่

อย่างที่คุณเห็นหากไม่มีX-UA-Compatibleเมตาแท็กหรือส่วนหัว HTTP จะตรวจสอบการตั้งค่า "มุมมองที่เข้ากันได้" ของผู้ใช้ หากผู้ใช้ไม่มีเว็บไซต์ของคุณ IE จะตรวจสอบว่ามีการ<!DOCTYPEประกาศหรือไม่ หากพบมันจะใช้โหมดมาตรฐานล่าสุดโดยอัตโนมัติ (เรียกอีกอย่างว่า "EmulateIEx") หากไม่เป็นเช่นนั้นระบบจะเปลี่ยนกลับเป็นโหมด Quirks

เหตุผลอื่น ๆ ที่คุณไม่ควรใช้เมตาแท็ก "X-UA-Compatible" จาก Microsoft เอง (ของฉันเน้น):

เมื่อ Internet Explorer พบเมตาแท็กที่เข้ากันได้กับ X-UA จะเริ่มต้นใหม่โดยใช้เอ็นจิ้นของเวอร์ชันที่กำหนด นี่คือประสิทธิภาพที่ได้รับความนิยมเนื่องจากเบราว์เซอร์ต้องหยุดและเริ่มการวิเคราะห์เนื้อหาใหม่

กล่าวอีกนัยหนึ่งมันทำให้การแสดงหน้าเริ่มต้นช้าลง

สั่ง X-UA-เข้ากันได้เป็นเครื่องมือที่จะช่วยให้การใช้งานในการทำงานในรุ่นล่าสุดยัง Internet Explorer ในขณะที่การปรับปรุงจะทำให้แอพลิเคชัน

มันถูกออกแบบมาเพื่อการใช้งานชั่วคราวเท่านั้น

การปฏิบัติที่ดีที่สุดคือ X-UA-เข้ากันได้ส่วนหัว การเพิ่มคำสั่งไปยังส่วนหัวการตอบกลับจะบอกให้ Internet Explorer ทราบว่าจะใช้เอ็นจิ้นใดก่อนที่จะเริ่มการแยกวิเคราะห์เนื้อหา ต้องกำหนดค่าในเซิร์ฟเวอร์ของเว็บไซต์

กล่าวอีกนัยหนึ่งก็คือมีวิธีที่ดีกว่าในการนำ X-UA-Compatible ไปใช้หากคุณต้องการจริงๆ

ตั้งแต่วันที่ 12 มกราคม 2559 เฉพาะ Internet Explorer เวอร์ชันล่าสุดที่พร้อมใช้งานสำหรับระบบปฏิบัติการที่รองรับเท่านั้นที่จะได้รับการสนับสนุนทางเทคนิคและการอัปเดตด้านความปลอดภัย Internet Explorer 11เป็นรุ่นล่าสุดของ Internet Explorer และจะยังคงได้รับการปรับปรุงการรักษาความปลอดภัย, การแก้ไขปัญหาการทำงานร่วมกันและการสนับสนุนทางเทคนิคเกี่ยวกับWindows 7, Windows 8.1 และ Windows 10

IE11 เป็นเพียงรุ่นที่สนับสนุนอย่างเป็นทางการของ IE

เหตุผลเดียวในการรวมX-UA-Compatibleเมตาแท็กใน HTML ของคุณคือการแทนที่การตั้งค่า "มุมมองที่เข้ากันได้" ของผู้ใช้ใน IE8, 9 และ 10 สำหรับเว็บไซต์ของคุณ ในเกือบทุกกรณีผู้ใช้จะไม่ได้เปลี่ยนการตั้งค่าเหล่านี้ (จะทำไม?) และตอนนี้เบราว์เซอร์เหล่านั้นไม่ได้รับการสนับสนุนอีกต่อไป

กล่าวโดยย่อ: แท็กนี้มีวัน


17
โฟลว์ชาร์ตยอดเยี่ยมมาก
bennettp123

9
โปรดทราบว่า ณ วันนี้ (10/16/2015) เป็นความจริงที่ว่าปุ่ม compat ใน IE11 หายไป แต่ยังสามารถเปิดใช้งานได้ในเมนูการตั้งค่าดังนั้นจึงยังคงมีอยู่ เราใช้มันในปัจจุบันเนื่องจากซอฟต์แวร์บนเว็บของเราถูกใช้ในอินทราเน็ตขององค์กรที่มีระบบเดิมที่ต้องใช้โหมดการทำงานร่วมกันในการทำงานดังนั้นเราจึงต้องหลีกเลี่ยงสิ่งนั้น เคล็ดลับที่ยอดเยี่ยมเกี่ยวกับส่วนหัว HTTP ขอบคุณสำหรับสิ่งนั้น!
Doug Johnson

1
เนื่องจากยังคงเป็นไปได้ที่จะเปิดใช้งานมุมมองความเข้ากันได้ใน IE11 และลูกค้าองค์กรกำลังทำเช่นนั้นส่วนหัว / แท็กจึงยังมีประโยชน์ ฉันเห็นว่าทำไมส่วนหัว HTTP จึงเหนือกว่า แต่ถ้าแท็กอยู่ที่จุดเริ่มต้นของ DOM จะเกิดอันตรายเพียงเล็กน้อยและเฉพาะในเบราว์เซอร์ที่ไม่ได้เริ่มต้นในโหมด Edge เนื่องจากเป็นข้อกำหนดสำหรับผู้ใช้บางครั้งที่ติดอยู่ในมุมมองความเข้ากันได้ฉันไม่คิดว่าการใช้แท็กเป็นแนวทางปฏิบัติที่ไม่ดี (ที่ด้านบนของ <head>)
Tom Boutell

2
@ChuckLeButt หรือผู้ดูแลระบบได้ดำเนินการ "ให้" ผ่านนโยบายกลุ่ม ยังคงเป็นสิ่งสำคัญมากในการตั้งค่าขององค์กรซึ่งถือเป็นชัยชนะที่ยิ่งใหญ่ที่สุดสำหรับเราที่จะมีวิธีเอาชนะมัน
Tom Boutell

2
@ChuckLeButt ฉันเห็นจุดของคุณและไม่มี windows-fu ที่จะขัดแย้ง ... แต่ลูกค้าของเราบอกเราว่าพวกเขามี IE11 ในโหมดที่เข้ากันได้ทั่วทั้งกระดาน วิธีที่พวกเขาได้รับมันไม่มีความรู้ที่แบ่งปันกับเราจริงๆ เป็นไปได้ว่าพวกเขามีอยู่ในรายการที่ชัดเจนมาโดยตลอด
Tom Boutell

18

หากผู้ใช้กำลังเรียกดูเพจที่อยู่ในโซน "อินทราเน็ตเฉพาะที่" (เช่นบนอินทราเน็ตขององค์กร) "มุมมองความเข้ากันได้" จะเปิดอยู่โดยค่าเริ่มต้น นี่คือตอนที่ฉันใช้ "X-UA-Compatible" เพื่อบังคับให้ IE ใช้เอนจิ้นรุ่นล่าสุด


ใช่ดูเหมือนจะเป็นการใช้งานที่ถูกต้อง แต่ในสถานการณ์นั้นคุณอาจต้องการวางไว้ในการกำหนดค่าเซิร์ฟเวอร์หรือส่วนหัวของไซต์ stackoverflow.com/a/9338959/199700
Chuck Le Butt

1
นอกจากนี้ยังมีการเปลี่ยนแปลงที่เกิดจาก Microsoft เลิกใช้มุมมองความเข้ากันได้เล็กน้อย นอกจากอินทราเน็ตเฉพาะที่แล้วหากโดเมนมีโดเมนย่อยและแอปพลิเคชันจำนวนมากการเพิ่มมุมมองความเข้ากันได้สำหรับโดเมนย่อยจะนำไปใช้กับโดเมน ENTIRE ทันที (ก่อนที่จะใช้กับโดเมนย่อยที่ระบุเท่านั้น) ดังนั้นหากคุณมีแอปพลิเคชั่นเพียงแอปเดียวที่อาจต้องใช้คุณควรทำสิ่งนี้ให้กับคนอื่น ๆ ทั้งหมดเพื่อหลีกเลี่ยงปัญหาการสนับสนุน
kilkenny

@ChuckLeButt ส่วนหัวนั้นดีตราบใดที่คุณอยู่ในเครือข่าย แต่ถ้าผู้ใช้เลือกที่จะบันทึกเพจไว้ในเครื่องสิ่งที่คุณเหลือก็คือ<meta>แท็กที่ฝังไว้ นั่นเป็นเหตุผลว่าทำไมจึงควรทำซ้ำส่วนหัวที่สำคัญเป็น<meta>แท็กด้วย
ravilov

1

ตราบใดที่ตั้งค่าเป็น "Edge" ก็จะตรวจสอบความถูกต้องเป็น HTML5 และฉันได้รับแจ้งว่าจะทำให้ IE แสดงผลหน้าเว็บอีกครั้งหากไซต์นั้นแสดงผลในโหมดความเข้ากันได้อยู่แล้ว อย่างไรก็ตามการวางไว้ในการกำหนดค่าเซิร์ฟเวอร์ ( .htaccessฯลฯ ) จะดีกว่าการใส่ HTML ของแต่ละหน้า

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