Internet Explorer 11 ปิดใช้งาน“ แสดงไซต์อินทราเน็ตในมุมมองที่เข้ากันได้” ผ่านเมตาแท็กไม่ทำงาน


101

ฉันทำงานบนเว็บไซต์อินทราเน็ตมานานกว่า 6 เดือนแล้วหรือไม่โดยที่ฉันใช้doctypeเมตาแท็กhtml5 และ edge ที่เข้ากันได้ด้านล่างเพื่อบังคับให้ Internet Explorer ไม่เลียนแบบเบราว์เซอร์เวอร์ชันเก่าและสิ่งนี้ก็ใช้ได้

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>My title</title>
    <meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
</head>
<body>
</body>
</html>

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

การตั้งค่ามุมมองความเข้ากันได้ของไซต์อินทราเน็ต

กว่าหนึ่งเดือนที่แล้วฉันได้รับการอัปเกรดเป็น Internet Explorer 11 และไซต์ยังคงทำงานได้ตามที่คาดไว้

วันนี้สิ่งนี้หยุดทำงานตามที่คาดไว้ฉันไม่สามารถพูดได้อย่างแน่นอน แต่ฉันคิดว่านโยบายที่บังคับให้มุมมองความเข้ากันได้ไม่ได้เปิดใช้งานใน IE11 และตอนนี้ก็คือ ... ทำในสิ่งที่คาดหวังและไซต์นี้กำลังทำงานในโหมดองค์กรซึ่งเลียนแบบ IE8

ไม่มีใครรู้วิธีแก้ไขปัญหานี้และบังคับให้ใช้ IE11 บนไซต์อินทราเน็ตเมื่อมีการบังคับใช้ "โหมดองค์กร" ที่เข้ากันได้ และไม่สามารถปิดการใช้งานผ่านการตั้งค่าเบราว์เซอร์?

แก้ไข

ฉันเพิ่งลองเพิ่มส่วนหัวที่กำหนดเองใน web.config ของฉันตามที่อธิบายไว้ในคำตอบนี้ https://stackoverflow.com/a/18257208/98706

และสิ่งนี้ใช้ไม่ได้ผลสำหรับฉันฉันยังคงได้รับข้อความด้านล่างในคอนโซลแถบเครื่องมือสำหรับนักพัฒนาของ

HTML1122: Internet Explorer is running in Enterprise Mode emulating IE8.

เหมือนกับว่าเวอร์ชัน 8 กำลังได้รับการปฏิบัติedgeเมื่อเปิดใช้งานการตั้งค่าความเข้ากันได้ของอินทราเน็ตใน IE11

โพสต์นี้: https://www.leapinggorilla.com/Blog/Read/1016/ie-ate-my-css---disabling-compatability-mode อธิบายสิ่งนี้ได้ดีฉันยังไม่ได้ลองตั้งค่าส่วนหัวนี้ด้วยรหัสและ ผู้ใช้ของเราไม่สามารถเข้าถึงเพื่อเปลี่ยนการตั้งค่าเบราว์เซอร์ของพวกเขา .. การเปลี่ยนแปลงอื่น ๆ ยังไม่ได้ผล

อัปเดต

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


โหมดองค์กรแตกต่างจากมุมมองความเข้ากันได้โปรดดูที่stackoverflow.com/a/26463309/98706สำหรับวิธีปิดการใช้งาน แต่ในกรณีของฉันมันไม่ง่ายอย่างที่สามารถปิดได้ฉันต้องการแทนที่มันสำหรับไซต์อินทราเน็ตเฉพาะ ใช้เมตาแท็ก แต่ไม่ได้ผลฉันไม่ได้ลองอีกครั้งเนื่องจากตอนนี้ไซต์ของเราอยู่ในรายการที่อนุญาตพิเศษ
แพ่ง

คำตอบ:


93

ตรวจสอบให้แน่ใจว่า:

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

เป็น<meta>แท็กแรกบนเพจของคุณมิฉะนั้น IE อาจไม่เคารพ

อีกวิธีหนึ่งปัญหาอาจเกิดจาก IE กำลังใช้โหมดองค์กรสำหรับเว็บไซต์นี้:

  • คำถามของคุณกล่าวว่าคอนโซลแสดง: HTML1122: Internet Explorer is running in Enterprise Mode emulating IE8.
  • ในกรณีนี้คุณอาจต้องปิดโหมดองค์กร (หรือแบบนี้ ) หรือปิดสำหรับเว็บไซต์นั้นจากเมนูเครื่องมือใน IE
  • อย่างไรก็ตามในทางทฤษฎีแล้วโหมดองค์กรควรถูกแทนที่ด้วยแท็ก X-UA-Compatible แต่ IE อาจมีข้อบกพร่อง ...

ใช่ฉันได้ทำสิ่งนี้ไปแล้ว แต่น่าเสียดายที่มันไม่ได้ผล :(
แพ่ง

อาจเป็นไปได้ว่าโหมด Enterprise เปิดอยู่สำหรับเว็บไซต์นั้น (ตามคำถามของคุณ) ... ฉันได้อัปเดตคำตอบแล้วแจ้งให้เราทราบว่าช่วยได้หรือไม่
sparrowt

2
"โหมดองค์กร" และ "มุมมองความเข้ากันได้" แตกต่างกันแม้ว่าจะคล้ายกันก็ตาม แม้ว่าจะเลือก "แสดงไซต์อินทราเน็ตในมุมมองที่เข้ากันได้" แท็ก X-UA-Compatible ก็ควรแทนที่สิ่งนี้ อย่างไรก็ตามโหมดองค์กรอาจแทนที่ว่า ... คุณเห็นไอคอนโหมดองค์กร ( media.askvg.com/articles/images5/… ) เมื่ออยู่บนไซต์ของคุณหรือไม่
sparrowt

1
ถ้าคุณกด F12 แล้วดูที่แท็บการจำลองจะเป็นอย่างไร ควรบอกคุณว่าเหตุใดจึงใช้โหมดเอกสาร ฉันคิดว่าคุณกำลังเข้าสู่โหมด Enterprise ไม่ใช่มุมมองความเข้ากันได้
sparrowt

19
เป็นอย่างนี้! @ # $ น่ารำคาญเสียเวลานักพัฒนาเว็บทั่วโลกไปหลายแสนชั่วโมง
Sam Watkins

19

ปัญหานี้มักเกิดจาก URL ของเว็บไซต์ / อินทราเน็ตถูกวางไว้ในหนึ่งใน:

  • รายการโหมดความเข้ากันได้
  • Internet Explorer Intranet Zone
    (ที่มีการแสดงไซต์อินทราเน็ตในการตั้งค่ามุมมองที่เข้ากันได้ )
  • รายการโหมดองค์กร

บนเครือข่ายขององค์กรเหล่านี้ตั้งค่ามุมมองที่เข้ากันได้มักจะมีการควบคุมจากส่วนกลางผ่านทางนโยบายกลุ่ม ในกรณีของคุณดูเหมือนว่าโหมดองค์กรจะเป็นผู้ร้าย

IE 11 โหมดองค์กร

น่าเสียดายที่การตั้งค่า META X-UA-Compatible จะไม่แทนที่สิ่งนี้

สำหรับผู้ใช้ปลายทาง

บางครั้งวิธีเดียวที่ผู้ใช้ปลายทางจะแทนที่สิ่งนี้คือการกด F12 และเปลี่ยนโหมดเอกสารภายใต้แท็บการจำลอง อย่างไรก็ตามการตั้งค่านี้ไม่ถาวรและอาจเปลี่ยนกลับได้เมื่อปิดเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์

คุณยังสามารถลองยกเว้นไซต์ของคุณจากโซนอินทราเน็ต แต่รายชื่อโดเมนที่อยู่ในโซนอินทราเน็ตมักจะถูกควบคุมโดยนโยบายกลุ่มด้วยดังนั้นโอกาสในการทำงานนี้จึงมีน้อย

หากต้องการดูรายการโดเมนที่อยู่ในโซนอินทราเน็ตให้ไปที่:

เครื่องมือ -> ตัวเลือกอินเทอร์เน็ต -> ความปลอดภัย -> ไซต์ -> ขั้นสูง

หากรายการมีโดเมนย่อยของคุณและเป็นสีเทาคุณจะไม่สามารถแทนที่มุมมองความเข้ากันได้จนกว่าผู้ดูแลระบบเครือข่ายของคุณจะอนุญาต

คุณจำเป็นต้องติดต่อผู้ดูแลระบบเครือข่ายของคุณเพื่ออนุญาตให้เปลี่ยนการตั้งค่ามุมมองความเข้ากันได้ในนโยบายกลุ่ม

สำหรับผู้ดูแลระบบเครือข่าย

การโหลดเว็บไซต์โดยเปิด Developer Tools (F12) มักจะรายงานสาเหตุที่ IE กำลังเปลี่ยนไปใช้โหมดที่เก่ากว่า

โดยทั่วไปการตั้งค่าทั้ง 3 ที่กล่าวถึงข้างต้นจะถูกควบคุมผ่านนโยบายกลุ่มแม้ว่าบางครั้งอาจถูกแทนที่บนเครื่องของผู้ใช้

หากเป็นปัญหาในโหมดองค์กร (ตามที่ปรากฏในโปสเตอร์ต้นฉบับ) บทความสองบทความต่อไปนี้อาจเป็นประโยชน์:


ฉันขยายคำตอบที่ดีของคุณพร้อมรายละเอียดเพิ่มเติมที่ฉันค้นพบระหว่างการวิจัยล่าสุด ฉันหวังว่าจะไม่เป็นไร
Simon East

8

สำหรับผู้ที่กำลังสร้างโครงการ ASP.NET MVC ตรวจสอบให้แน่ใจว่าคุณได้เพิ่ม:

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

แท็กในหน้าเค้าโครง (เทมเพลต) ของคุณ ฉันใช้เวลาเพียงสองชั่วโมงในการแก้ไขข้อบกพร่องและปรับแต่งเพื่อให้ทราบว่าฉันได้เพิ่มเมตาแท็กนั้นลงในหน้าย่อยเท่านั้น ทันทีที่ฉันเพิ่มลงในหน้าเลย์เอาต์ของฉันเบราว์เซอร์ก็โหลดในโหมด EDGE อย่างสมบูรณ์แบบ


ปัญหาของฉันเกิดจากโหมด Enterprise ใหม่ใน IE11 ซึ่งบังคับให้เบราว์เซอร์เลียนแบบ IE8 มันไม่เหมือนกับโหมดความเข้ากันได้ซึ่งเป็นสิ่งที่เมตาแท็กนี้ใช้ในการลบล้าง ฉันใช้สิ่งนี้อย่างถูกต้อง
แพ่ง

ความคิดเห็นของฉันมีขึ้นเพื่อช่วยเหลือผู้อื่นที่มีอาการเดียวกันซึ่งกำลังสร้างไซต์ใน ASP.NET MVC ฉันไม่ได้พูดกับคุณโดยเฉพาะ
Jason Marsell

เมตาแท็กจะใช้งานได้ (สำหรับปัญหาโหมดความเข้ากันได้ไม่ใช่ปัญหาโหมดองค์กร) สำหรับไซต์ที่ไม่ใช่. NET / MVC เกินไป btw มันไม่เฉพาะเจาะจงสำหรับ ASP.NET
Dan Harris

4

คำตอบที่ทำเครื่องหมายไว้คือคำตอบที่ถูกต้อง อย่างไรก็ตามแพ่งคุณควรติดตามเรื่องนี้กับกลุ่มผู้ดูแลระบบโฆษณาและเดสก์ท็อปของคุณ พวกเขาใช้รายการไซต์โหมดองค์กร IE11 ในทางที่ผิด Microsoft ไม่ได้ตั้งใจที่จะใช้กับไซต์อินทราเน็ตทั้งหมดภายในองค์กรเลย นั่นจะเป็นการเผยแพร่การตั้งค่า "แสดงผลไซต์อินทราเน็ตทั้งหมดในโหมดความเข้ากันได้" ที่มีอยู่ซึ่งเป็นสารพิษของความก้าวหน้าของเว็บไซต์ขององค์กรทั่วโลก

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


ใช่พวกเขาควรทำอย่างนั้นอย่างแน่นอน แต่น่าเสียดายที่ฉันไม่ได้พูดอะไรในเรื่องนี้ แต่ได้รับการเลี้ยงดูมาพร้อมกับพวกเขา
แพ่ง

1

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

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


ดู: stackoverflow.com/questions/2518256/…หากคุณมีการเข้าถึง web.config
fontophilic

ฉันเห็นคำถามนั้นก่อนหน้านี้ แต่ฉันเดาว่าฉันเข้าใจผิดที่บรรทัดส่วนหัว HTTP สำหรับบรรทัด META และคิดว่าฉันได้ลองแล้ว มันใช้งานได้ดีเมื่อฉันยืดออก ขอบคุณที่ชี้ฉันกลับไป
Mike Anderson

ฉันได้ลองใช้การตั้งค่า EDGE ที่เข้ากันได้เดียวกันกับการกำหนดค่าเว็บแล้วและมันไม่ได้ผลสำหรับฉันวิธีเดียวที่ฉันพบว่าทำให้มันใช้งานได้คือขอให้เว็บไซต์เฉพาะของเราถูกเพิ่มในรายการสีขาวเพื่อที่พวกเขาจะถูกละเว้นจากใหม่ IE11 Enterprise ซึ่งดูเหมือนว่าจะมีบางอย่างที่แตกต่างจากโหมดความเข้ากันได้ นี่ไม่ใช่ทางออกที่ดีสำหรับฉันเนื่องจากการวนซ้ำที่ฉันต้องข้ามผ่านเพื่อให้เสร็จทุกครั้ง
แพ่ง

ดูเหมือนว่าคุณเดินไปตามถนนสายเดียวกับฉัน มี 2 ​​สิ่งที่ฉันต้องทำ 1 คือการตั้งค่า EDGE ในแท็ก META ของหน้า คุณอาจสามารถทำได้ใน web.config (หรือเปล่าฉันไม่รู้) แต่ฉันทำในหน้าหลักของไซต์ อีกอันกำลังเพิ่มส่วนหัว HTTP ที่กำหนดเองไปที่ web.config
Mike Anderson

1

นี่เป็นปัญหาเก่าที่มีข้อมูลดีๆ แต่สิ่งที่ฉันเพิ่งพบคือการใช้ FQDN ปิดโหมด Compat ใน IE 9 - 11 ตัวอย่าง ฉันมีปัญหาเกี่ยวกับ
http: // lrmstst01: 8080 / JavaWeb / login.do
แต่ปัญหาหายไปด้วย
http://lrmstst01.mydomain.int:8080/JavaWeb/login.do
NB: .int เป็นส่วนหนึ่งของ โดเมนภายในของเรา


ลิงก์เหล่านั้นไม่ถูกต้อง ใช้เป็นตัวอย่างของ url ที่มีเพียงชื่อคอมพิวเตอร์เทียบกับชื่อที่มี FQDN
Dean P

2
เคล็ดลับสำหรับมือโปร: Example.com มีไว้เพื่อจุดประสงค์นี้
ขั้นพื้นฐาน

นี่ยังคงเป็นปัญหาและความคิดเห็นนี้ไม่ได้เพิ่มอะไรในการแก้ไข
Diana

0

ย้ายไปยังโซนไซต์ที่เชื่อถือได้โดยเพิ่มลงในรายการไซต์ที่เชื่อถือได้หรือการตั้งค่าในเครื่อง การดำเนินการนี้จะย้ายออกจาก Intranet Zone และจะไม่แสดงผลใน Compat ดู.


Ps ฉันรู้ว่าสิ่งนี้ได้ผลเพราะเป็นสิ่งที่เรากำลังทำที่ บริษัท ของฉันสำหรับผลิตภัณฑ์ที่ใช้เบราว์เซอร์รุ่นใหม่ที่ไม่ได้เขียนด้วยแท็ก X-UA เพื่อบังคับใช้การแสดงผลในแบบที่พวกเขาต้องการ
Greg C.

เนื่องจากนี่เป็นไปได้ว่าการตั้งค่าที่กว้างของ บริษัท คำตอบของคุณจะต้องถูกนำไปใช้กับเครื่องของผู้ใช้ทุกคนซึ่งแทบจะไม่เหมาะ
MattD

0

เพิ่มคุณสมบัติด้านล่างลงในไฟล์ web.config สำหรับไซต์ IIS สิ่งนี้ใช้ได้ผลกับฉันในอินทราเน็ตของฉันใน IE11

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <clear />
      <add name="X-UA-Compatible" value="IE=edge" />
    </customHeaders>
  </httpProtocol>
</system.webServer> 

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

0

ฉันแก้ไขปัญหานี้โดยเปลี่ยนเส้นทางผู้ใช้ไปที่ FQDN ของเซิร์ฟเวอร์ที่โฮสต์อินทราเน็ต

IE อาจใช้อัลกอริทึมที่เลวร้ายที่สุดในโลกในการตรวจจับไซต์ "อินทราเน็ต" ... แท้จริงแล้วการระบุ server.domain.tld ช่วยแก้ปัญหาให้ฉันได้

ใช่คุณอ่านอย่างถูกต้อง IE ตรวจพบไซต์อินทราเน็ตที่ไม่ใช่ที่อยู่ IP ส่วนตัวเช่นเดียวกับนักพัฒนาที่เคยได้ยิน TCP / IP จะทำไม่โดยส่วน "โฮสต์" ของ URL หากไม่มีส่วนของโดเมนจะต้อง เป็นภายใน

น่ากลัวที่ทราบว่าผู้พัฒนา IE ไม่เข้าใจแนวคิด TCP / IP พื้นฐานที่สุด

โปรดทราบว่านี่เป็นลูกค้าองค์กรขนาดใหญ่การให้พวกเขาเปลี่ยน GPO ให้คุณก็เหมือนกับการพยายามเคลื่อนย้ายเทือกเขาแอลป์ไปทางตะวันออก 4 เมตรจะไม่เกิดขึ้น


IE อาจทำการค้นหา DNS และทราบ IP จากสิ่งนั้น เนื่องจากเป็น MS อาจทำ AD ได้ แต่ DNS มีเหตุผลมากกว่า
smoore4

@SQLDBA ลบหากคุณระบุ IP เช่น 10.0.0.1 โฮสต์จะไม่ถูกตรวจพบว่าเป็นไซต์ "อินทราเน็ต" ... ไม่เกี่ยวอะไรกับ DNS คุณหมายถึงอะไรกับ AD? คุณหมายถึงมันเชื่อมต่อกับ AD และค้นหาโฮสต์ที่นั่นหรือไม่? ไม่มีเหตุผลทำไมถึงทำอย่างนั้น? จากนั้นอีกครั้งพวกเขาคือ Microsoft ด้วยเหตุผล™
thecarpy

0

สำหรับสิ่งที่คุ้มค่าฉันมีปัญหาเช่นกันใน IE11:

  • ฉันไม่ได้อยู่ในโหมดองค์กร
  • มีการเลือก "แสดงไซต์อินทราเน็ตในมุมมองที่เข้ากันได้"
  • ฉันมีการตั้งค่า<!DOCTYPE html>และIE=Edgeการตั้งค่าทั้งหมดที่กล่าวถึงในคำถาม
  • ส่วนหัวของเมตาเป็นองค์ประกอบที่ 1 ใน<head>องค์ประกอบ

หลังจากนั้นไม่นานฉันก็พบว่า:

  • ส่วนหัว User Agent ที่ส่งไปยังเซิร์ฟเวอร์คือ IE7 แต่ ...
  • ค่า JavaScript คือ IE11!

ส่วนหัว HTTP :

User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E) แต่

JavaScript :

window.navigator.userAgent === 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko'

ดังนั้นฉันจึงทำการตรวจสอบในฝั่งไคลเอนต์

และ BTW ไม่แนะนำให้ตรวจสอบตัวแทนผู้ใช้อีกต่อไป ดูhttps://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent (แต่อาจมีกรณีที่ดี)

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