ในเว็บไซต์ของไมโครซอฟท์พวกเขาอ้างว่าการประกาศประเภทหลักง่ายๆก็เพียงพอแล้ว แต่ถึงแม้เอกสารจะสั้นเท่านี้ก็กลับสู่โหมด IE7:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
</body>
</html>
ในเว็บไซต์ของไมโครซอฟท์พวกเขาอ้างว่าการประกาศประเภทหลักง่ายๆก็เพียงพอแล้ว แต่ถึงแม้เอกสารจะสั้นเท่านี้ก็กลับสู่โหมด IE7:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
</body>
</html>
คำตอบ:
Internet Explorer ตั้งสมมติฐานว่าหน้าเว็บส่วนใหญ่เขียนขึ้นเพื่อกำหนดเป้าหมาย IE เวอร์ชันก่อนหน้าและดูประเภทหลักเมตาแท็กและ HTML เพื่อกำหนดโหมดความเข้ากันได้ที่ดีที่สุด (บางครั้งไม่ถูกต้อง) แม้ว่าจะมีประเภท HTML5 เช่น IE จะยังคงทำให้เว็บไซต์ของคุณอยู่ในโหมดความเข้ากันได้หากเป็นไซต์อินทราเน็ต
เพื่อให้แน่ใจว่าเว็บไซต์ของคุณใช้โหมดมาตรฐานล่าสุดเสมอคุณสามารถตรวจสอบให้แน่ใจว่าDisplay intranet sites in Compatibly
ปิดอยู่ อย่างไรก็ตามคุณต้องทำสิ่งนี้ในเครื่องแต่ละเครื่องไปยังเว็บเซิร์ฟเวอร์ (คำแนะนำอยู่ด้านล่าง)
หรือที่ดีกว่านั้นคือคุณสามารถใช้X-UA-Compatible
ส่วนหัวเพื่อปิดสิ่งนี้จากเซิร์ฟเวอร์ โปรดทราบว่าการใช้เมตาแท็กจะไม่ได้ผล!
<!-- Doesn't always work! -->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
ตลอด MSDN มีการกล่าวถึงว่าการใช้ส่วนหัวของโฮสต์หรือเมตาแท็กควรแทนที่แม้แต่ไซต์อินทราเน็ต บทความทำความเข้าใจเกี่ยวกับโหมดความเข้ากันได้ใน internet explorer 8กล่าวต่อไปนี้
เว็บไซต์ธุรกิจภายในจำนวนมากได้รับการปรับให้เหมาะสมสำหรับ Internet Explorer 7 ดังนั้นข้อยกเว้นเริ่มต้นนี้จะรักษาความเข้ากันได้นั้นไว้ ... อีกครั้งหากใช้เมตาแท็กหรือส่วนหัว http เพื่อตั้งค่าโหมดความเข้ากันได้กับเอกสารมันจะแทนที่การตั้งค่าเหล่านี้
อย่างไรก็ตามในทางปฏิบัติจะไม่ได้ผลการใช้ส่วนหัวของโฮสต์เป็นทางเลือกเดียวที่ใช้ได้ผล ส่วนความคิดเห็นของบทความยังแสดงตัวอย่างมากมายของปัญหานี้
การใช้เมตาแท็กยังมีปัญหาอื่น ๆ อีกมากมายเช่นการละเว้นแท็กหากไม่ได้อยู่ใต้<head>
แท็กโดยตรงหรือมีข้อมูลอยู่ก่อนหน้านั้นมากเกินไป (4k) นอกจากนี้ยังอาจทำให้เอกสารถูกแยกวิเคราะห์ใน IE บางเวอร์ชันซึ่งจะทำให้การแสดงผลช้าลง คุณสามารถอ่านเพิ่มเติมเกี่ยวกับปัญหาเหล่านี้ในบทความ MSDN ปฏิบัติที่ดีที่สุด: รับหัวของคุณในการสั่งซื้อ
การเพิ่มส่วนหัวที่เข้ากันได้กับ X-UA
หากคุณใช้. NET และ IIS คุณสามารถเพิ่มสิ่งนี้ลงในไฟล์web.config
ได้คุณยังสามารถทำได้โดยใช้โปรแกรม:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-UA-Compatible" value="IE=edge" />
</customHeaders>
</httpProtocol>
</system.webServer>
หากคุณไม่ได้ใช้ IIS ก็ทำได้ง่ายในทุกภาษา ตัวอย่างเช่นนี่คือวิธีการใน PHP:
header('X-UA-Compatible: IE=edge');
ตราบใดที่X-UA-Compatible
ส่วนหัวนั้นแสดงอยู่ในประเภทเอกสาร HTML5 ไซต์จะทำงานในโหมดมาตรฐานล่าสุดเสมอ
การปิดมุมมองที่เข้ากันได้การปิดมุมมองที่เข้ากันได้
อาจมีประโยชน์ โดยไม่ต้องเลือกDisplay all intranet sites in compatibility view
ในการตั้งค่ามุมมองความเข้ากันได้
คุณสามารถนำสิ่งนี้ขึ้นมาได้โดยการกดปุ่มAltเพื่อรับเมนู
แก้ไข คำตอบนี้เกี่ยวข้องกับ IE9 ด้วย
alt
เพื่อเปิดแถบเครื่องมืออยู่ภายใต้เครื่องมือ -> การตั้งค่ามุมมองที่เข้ากันได้
อันนี้ใช้ได้เลย ..
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
X-UA-Compatible
เมตาแท็ก แต่ยังไม่เรียกใช้โหมดเอกสารมาตรฐาน IE10 เป็นค่าเริ่มต้นของหน้าฉันพบว่าหากเมตาแท็กอยู่ด้านล่างแท็กสคริปต์หรือเป็นเพียง อยู่ไกลจากด้านบนสุดของ<head>
โครงสร้าง DOM IE10 จะร้องและตั้งค่าโหมดเอกสารเป็นมาตรฐาน IE8 ดังนั้นให้IE=edge
เมตาแท็กของคุณปิด<title>
แท็ก ไม่ใช่วิธีแก้ไขง่ายๆสำหรับไซต์ Wordpress เสมอไปเมื่อไม่ได้เข้ารหัสไว้ในไฟล์เทมเพลตส่วนหัว ไม่แน่ใจว่า IE11 สนใจว่าเมตาแท็กอยู่ที่ใด แต่หวังว่านี่จะเป็นประโยชน์กับใครบางคน
ลองเพิ่มแท็กต่อไปนี้ที่ส่วนหัว
<meta http-equiv="X-UA-Compatible" content="IE=11,IE=10,IE=9,IE=8" />
IE=Edge
แทน
เมตาแท็กไม่ได้ทำอะไรกับไซต์อินทราเน็ตและปัญหาของฉันคือการแสดงผล IE10 ในโหมดความเข้ากันได้ของ IE10 สิ่งที่แก้ไขปัญหาสำหรับฉันคือการรับคำตอบของ @ Jeowเพิ่มเติมและใช้ค่านั้นในส่วนหัว http โดยการเพิ่มสิ่งต่อไปนี้ในweb.config
IIS:
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<!-- <add name="X-UA-Compatible" value="IE=edge" /> not good enough -->
<add name="X-UA-Compatible" value="IE=11,IE=10,IE=9,IE=8" />
</customHeaders>
</httpProtocol>
</system.webServer>
สำหรับวัตถุประสงค์ของ IE ไซต์อินทราเน็ตจะรวมไซต์ที่เปิดเผยต่อสาธารณะซึ่งไม่ได้ถูกกำหนดเส้นทางไปยังภายนอกเช่นพนักงาน Stackoverflow ที่ทำงานจากสำนักงานอาจเห็น stackoverflow.com ในโหมดความเข้ากันได้
มันทำงานได้อย่างสมบูรณ์แบบสำหรับฉันเมื่อฉันทำสิ่งต่อไปนี้:
บนhttp://msdn.microsoft.com/en-us/library/gg699338(v=vs.85).aspx
ใช้ตัวอย่างที่แน่นอนที่ระบุไว้ในช่องแรก (เพิ่มส่วนที่ขาดหายไป</html>
ที่ด้านล่าง) เปิดใน IE10 และมาตรฐานถูกบังคับฉันคิดว่าคุณอาจต้องการเนื้อหาจริงใน html เพื่อบังคับให้มาตรฐานไม่แน่ใจ
คำแนะนำของฉันคือการแทนที่โค้ดว่างของคุณด้วยเนื้อหาจริง (สิ่งง่ายๆ) และดูว่ามันทำอะไรได้บ้าง