ฉันกำลังทำงานให้กับลูกค้าที่บังคับใช้โหมดความเข้ากันได้กับไซต์อินทราเน็ตทั้งหมด ฉันสงสัยว่ามีแท็กที่ฉันสามารถใส่ลงใน HTML ที่บังคับให้ปิดโหมดความเข้ากันได้หรือไม่
ฉันกำลังทำงานให้กับลูกค้าที่บังคับใช้โหมดความเข้ากันได้กับไซต์อินทราเน็ตทั้งหมด ฉันสงสัยว่ามีแท็กที่ฉันสามารถใส่ลงใน HTML ที่บังคับให้ปิดโหมดความเข้ากันได้หรือไม่
คำตอบ:
มีโหมด "ขอบ" คือ
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>My Web Page</title>
</head>
<body>
<p>Content goes here.</p>
</body>
</html>
จากหน้า MSDN ที่เชื่อมโยง:
โหมด Edge บอกให้ Windows Internet Explorer แสดงเนื้อหาในโหมดสูงสุดที่มีอยู่ซึ่งแบ่งกระบวนทัศน์ "ล็อค" ด้วย Internet Explorer 8 สิ่งนี้เทียบเท่ากับโหมด IE8 หาก Internet Explorer รุ่นต่อไป (สมมุติฐาน) รองรับโหมดความเข้ากันได้ที่สูงกว่าหน้าเว็บที่ตั้งค่าเป็น Edge จะปรากฏในโหมดสูงสุดที่รุ่นนั้นรองรับ อย่างไรก็ตามหน้าเดียวกันเหล่านั้นจะยังคงปรากฏในโหมด IE8 เมื่อดูด้วย Internet Explorer 8
อย่างไรก็ตามไม่สนับสนุนโหมด "edge" ในการใช้งานจริง:
ขอแนะนำให้นักพัฒนาเว็บ จำกัด การใช้โหมด Edge เพื่อทดสอบหน้าเว็บและการใช้งานที่ไม่ได้ใช้งานอื่น ๆ เนื่องจากอาจเกิดผลลัพธ์ที่ไม่คาดคิดจากการแสดงผลเนื้อหาของหน้าใน Windows Internet Explorer รุ่นอนาคต
ฉันไม่เข้าใจจริงๆว่าทำไม IE=8
แต่ตามนี้วิธีที่ดีที่สุดที่จะไปในขณะที่มีการใช้
IE=10
บนไซต์ของตนเอง หากคุณได้ทดสอบเว็บไซต์ของคุณใน IE10 (เวอร์ชั่นตัวอย่าง) แสดงว่าปลอดภัยสำหรับการใช้งาน ไม่เช่นนั้นคุณอาจต้องการดำเนินการIE=9
ในตอนนี้
Tools->Compatibility View Settings
และตรวจสอบแสดงเว็บไซต์ทั้งหมดในมุมมองที่เข้ากันได้ เพื่อแก้ไขปัญหาฉันต้องกลับส่วนหัวในการตอบสนอง HTTP:X-UA-Compatible: IE=edge
หลังจากผ่านไปหลายชั่วโมงแก้ปัญหาสิ่งนี้ ... ต่อไปนี้เป็นไฮไลท์ด่วนที่ช่วยเราจากX-UA-Compatible
เอกสาร: http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx#ctl00_contentContainer_ctl16
การใช้ <meta http-equiv="X-UA-Compatible" content=" _______ " />
มาตรฐานตัวแทนของผู้ใช้โหมด (คนที่ไม่ได้เลียนแบบ) ไม่สนใจ<!DOCTYPE>
คำสั่งในหน้าของคุณและแสดงผลบนพื้นฐานของมาตรฐานที่ได้รับการสนับสนุนโดยรุ่นของ IE ที่ (เช่นIE=8
จะเชื่อฟังดีกว่าระยะห่างชายแดนตารางและบางเตอร์หลอกกว่าIE=7
)
ในขณะที่โหมดจำลองบอกให้ IE ทำตาม<!DOCTYPE>
คำสั่งใด ๆในหน้าของคุณโหมดการแสดงผลตามรุ่นที่คุณเลือกและโหมดนิสัยใจคอตามIE=5
ค่าที่เป็นไปได้สำหรับcontent
แอตทริบิวต์คือ:
content="IE=5"
content="IE=7"
content="IE=EmulateIE7"
content="IE=8"
content="IE=EmulateIE8"
content="IE=9"
content="IE=EmulateIE9"
content="IE=edge"
หากคุณกำลังทำงานกับเพจในอินทราเน็ตโซนคุณอาจพบว่า IE9 ไม่ว่าคุณจะทำอะไรก็เข้าสู่โหมดการทำงานร่วมกันของ IE7
นี่คือสาเหตุที่การตั้งค่าภายในการตั้งค่าความเข้ากันได้ของ IE ซึ่งระบุว่าไซต์อินทราเน็ตทั้งหมดควรทำงานในโหมดความเข้ากันได้ คุณสามารถยกเลิกการเลือกนี้ได้ด้วยนโยบายกลุ่ม (หรือเพียงแค่ยกเลิกการเลือกธรรมดาใน IE) หรือคุณสามารถตั้งค่าต่อไปนี้:
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
งานนี้ (ตามรายละเอียดในคำตอบอื่น ๆ ) แต่อาจจะไม่ได้เริ่มต้นที่ปรากฏดังนั้น: มันต้องมาก่อนสไตล์ชีตที่มีการประกาศ ถ้าคุณทำไม่ได้มันจะถูกละเว้น
ฉันเชื่อว่านี่จะเป็นการหลอกลวง:
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
ตามที่แนะนำในคำตอบสำหรับคำถามที่เกี่ยวข้องนี้โหมด "edge" สามารถตั้งค่าในไฟล์ Web.Config สิ่งนี้จะทำให้ใช้ได้กับ HTML ทั้งหมดที่ส่งคืนจากแอปพลิเคชันโดยไม่จำเป็นต้องแทรกลงในหน้าแต่ละหน้า:
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-UA-Compatible" value="IE=edge" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
ขั้นตอนเดียวกันนี้สามารถทำได้โดยการแก้ไข "HTTP Response Headers" โดยใช้ IIS Managerสำหรับเซิร์ฟเวอร์ IIS เว็บไซต์ทั้งหมดหรือแอปพลิเคชันเฉพาะ
เมตาแท็กโซลูชันไม่ทำงานสำหรับเรา แต่การตั้งค่าในส่วนหัวการตอบกลับทำได้:
header('X-UA-Compatible: IE=edge,chrome=1');
chrome=1
คุณสมบัติstackoverflow.com/a/22059516/368691 โปรดทราบว่า Chrome Frame ถูกยกเลิกแล้ว blog.chromium.org/2013/06/retiring-chrome-frame.html
อีกไม่กี่บันทึกในหัวข้อนี้ขึ้นอยู่กับประสบการณ์ล่าสุดของฉัน มหาวิทยาลัยที่ฉันทำงานกับแล็ปท็อปที่มีปัญหา IE 8 ตั้งค่าเป็นโหมดความเข้ากันได้สำหรับไซต์อินทราเน็ตทั้งหมด ฉันพยายามเพิ่มเมตาแท็กเพื่อปิดการใช้งานโหมดนี้สำหรับหน้าเว็บที่เว็บไซต์ของฉันแสดง แต่ IE ไม่สนใจแท็กนี้อย่างสม่ำเสมอ ตามที่แลนซ์กล่าวถึงในโพสต์ของเขาการเพิ่มส่วนหัวการตอบสนองแก้ไขปัญหานี้ นี่คือวิธีที่ฉันตั้งค่าส่วนหัวตามวิธีการสร้างแผ่น HTML5:
<IfModule mod_headers.c>
Header set X-UA-Compatible "IE=edge,chrome=1"
# mod_headers can't match by content-type, but we don't want to send this header on *everything*...
<FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svg|svgz|ttf|vcf|webm|webp|woff|xml|xpi)$">
Header unset X-UA-Compatible
</FilesMatch>
</IfModule>
เพื่อให้ส่วนหัวนี้ถูกส่งจริงคุณต้องตรวจสอบให้แน่ใจว่าคุณได้เปิด mod_headers ใน Apache หากคุณต้องการตรวจสอบให้แน่ใจว่าคุณเปิดใช้งานโมเดอเรเตอร์นี้อยู่ในเพจที่สามารถรัน php ได้:
<pre>
<?php
print_r(apache_get_modules());
?>
</pre>
IE8 ใช้ค่าเริ่มต้นเป็นโหมดมาตรฐานสำหรับโหมด intERnet และ quirks สำหรับ intRAnet เมตาแท็ก HTML จะถูกข้ามหากคุณตั้งค่าประเภทเอกสารเป็น xhtml การนำส่ง ทางออกคือการเพิ่มส่วนหัว HTTP ในรหัส สิ่งนี้ใช้ได้สำหรับเรา ขณะนี้ไซต์อินทราเน็ตของเรากำลังบังคับให้ IE8 แสดงผลแอปในโหมดมาตรฐาน
เพิ่มไปยัง PageInit ของคลาสเพจพื้นฐาน (ASP.net C #):
Response.AddHeader("X-UA-Compatible", "IE=EmulateIE8");
การอ้างอิง: http://ilia.ws/archives/196-IE8-X-UA-Compatible-Rant.html
นี่คือสาเหตุที่การตั้งค่าภายในการตั้งค่าความเข้ากันได้ของ IE ซึ่งระบุว่าไซต์อินทราเน็ตทั้งหมดควรทำงานในโหมดความเข้ากันได้ คุณสามารถยกเลิกการเลือกนี้ได้ด้วยนโยบายกลุ่ม (หรือเพียงแค่ยกเลิกการเลือกธรรมดาใน IE) หรือคุณสามารถตั้งค่าต่อไปนี้:
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
เห็นได้ชัดว่ามันเป็นไปไม่ได้ที่จะเปลี่ยนการตั้งค่ามุมมองที่เข้ากันได้เป็นนโยบายกลุ่ม แต่มันเป็นสิ่งที่สามารถเปลี่ยนแปลงได้ในรีจิสทรีเมตาแท็กนี้ทำงานได้ดีสำหรับฉันฉันต้องทำให้แอตทริบิวต์ที่ต้องการทำงานเป็นส่วนหนึ่งของรูปแบบ html มันทำงานได้ในโครเมี่ยมและ Firefox แต่ไม่ใช่ IE
นี่คือภาพที่เห็นได้อย่างชัดเจนว่าเบราว์เซอร์ใดสนับสนุนแต่ละองค์ประกอบ html 5
สังเกตเห็นว่า Google Chrome เป็นตัวหารร่วมที่รองรับทุกอย่าง หวังว่านี่จะช่วยได้
แทรกเป็นรายการแรกภายใต้แท็ก
สิ่งนี้บังคับให้ IE แสดงผลหน้าเว็บในเวอร์ชันจริงของ IE และไม่สนใจเบราว์เซอร์ "การตั้งค่าโหมด" สิ่งนี้สามารถตั้งค่าได้ในเครื่องมือสำหรับนักพัฒนาลองเปลี่ยนเป็น IE เวอร์ชันเก่าเพื่อทดสอบซึ่งควรละเว้นและหน้าควรมีลักษณะเหมือนกันทุกประการ
ถ้าคุณสามารถเข้าถึงเซิร์ฟเวอร์วิธีที่น่าเชื่อถือที่สุดในการทำเช่นนี้คือทำบนเซิร์ฟเวอร์ใน IIS ไปที่ IIS HTTP Response Headers เพิ่มชื่อ:
ค่าที่เข้ากันได้กับ X-UA : IE = edge สิ่งนี้จะแทนที่เบราว์เซอร์และรหัสของคุณ
หากคุณต้องการให้แต่ละหน้าเว็บโหลดเนื้อหาที่เลือกและใช้ asp.net เพียงใช้เป็นแท็กแรกภายใต้แท็กส่วนหัวใน Views> shared> Layout.cshtml
แค่ปลายนิ้ว