เหตุใด Internet Explorer 11 จึงไม่ให้เกียรติข้อคิดเห็นแบบมีเงื่อนไขแม้ว่าจะจำลองโหมดเอกสารของ Internet Explorer 8 ก็ตาม


110

ฉันใช้เครื่องมือสำหรับนักพัฒนาInternet Explorer 11ใหม่เพื่อเปลี่ยนโหมดเอกสารเป็น "8" แต่ความคิดเห็นแบบมีเงื่อนไขจะยังคงถูกเพิกเฉยนั่นคือไม่ได้รับการแยกวิเคราะห์อย่างเหมาะสมและทำงานเหมือนความคิดเห็นทั่วไป ดังนั้นเบราว์เซอร์จะไม่ร้องขอ / โหลดไฟล์อ้างอิงใด ๆ ที่อยู่ในความคิดเห็นตามเงื่อนไข

ทำไมสิ่งนี้ถึงเกิดขึ้น? เป็นบั๊กหรือไม่?

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

อัปเดต:ปัญหานี้ได้รับการรายงานว่าได้รับการแก้ไขแล้วในรายงานข้อบกพร่องดังกล่าว


18
ถามตัวเองด้วยคำถามเดียวกัน! ฉันรู้ว่าพวกเขาทิ้งความคิดเห็นแบบมีเงื่อนไขใน IE10 แต่ IMHO ตัวจำลองควรพิจารณาเมื่อทดสอบเบราว์เซอร์รุ่นเก่า
Alexander Rechsteiner

12
อันที่จริงนั่นทำให้ฟีเจอร์นี้ไม่สามารถใช้งานได้
thasmo

3
คำถามที่แท้จริงคือทำไมคุณถึงใช้โหมดความเข้ากันได้? คำแนะนำของฉันคือหลีกเลี่ยงโหมดที่เข้ากันได้เช่นโรคระบาด แน่นอนว่าไม่เหมาะสำหรับการทดสอบโดยไม่คำนึงถึงปัญหาที่คุณได้อธิบายไว้เนื่องจากมีข้อบกพร่องและนิสัยใจคอที่เป็นที่รู้จักซึ่งย้อนกลับไปเมื่อพวกเขาเปิดตัวโหมดความเข้ากันได้ครั้งแรก หากคุณกำลังทดสอบความเข้ากันได้แบบย้อนหลังคุณจำเป็นต้องใช้สำเนาจริงของ IE8 (และ IE9 เป็นต้น) ไปที่modern.ieและดาวน์โหลด VM ที่มีให้สำหรับการทดสอบ
Spudley

19
มีข้อผิดพลาดเปิดอยู่ในตัวติดตามข้อผิดพลาดของ IE ฉันขอแนะนำให้ทุกคนเยี่ยมชมและบอก Microsoft ว่าคุณสามารถทำซ้ำสิ่งนี้ได้ connect.microsoft.com/IE/feedback/details/806767/…
Evgeny

15
ฉันคิดว่าการใช้โหมดความเข้ากันได้สำหรับการทดสอบนั้นเหมาะสมกว่าการดาวน์โหลดรูปภาพขนาด 1/2 กิกะไบต์สำหรับทุกเบราว์เซอร์ จึงมีข้อบกพร่อง (และนี่อาจเป็นหนึ่งในนั้น) แต่ 99% ของเวลาที่ใช้งานได้
Rolf

คำตอบ:


29

ตามไปJacob Rossi [MSFT]

สิ่งนี้ควรได้รับการแก้ไขในการอัปเดต 1 สำหรับ IE11 ซึ่งเผยแพร่เมื่อสัปดาห์ที่แล้ว

ที่โพสต์เมื่อวันที่ 22 เมษายน 2014

ในการเรียกใช้การทดสอบสองสามครั้งด้วยตัวเองดูเหมือนว่าสิ่งนี้ได้รับการแก้ไขแล้วและทั้งหมดทำงานได้อย่างราบรื่นอีกครั้งสำหรับการทดสอบเบราว์เซอร์ที่น่าทึ่งที่สุดที่เคยผลิต ... Internet Explorer!


4
สิ่งนี้จะต้องได้รับการโหวตให้มากขึ้น ฉันต้องขุดคำตอบสองคำตอบแบบสแต็กล้นเพื่อมาที่นี่
เต็ก

@ Lynda: คุณช่วยโพสต์เวอร์ชัน IE11 ของคุณได้ไหม ของฉันคือ 11.0.9600.17631
Mohamed Hussain

1
@MohamedHussain - เวอร์ชันของฉันคือ 11.0.9600.17690IC
L84

3
คุณต้องเป็นคนร่าเริง
paddotk

เกี่ยวกับ IE เป็น 'เบราว์เซอร์ที่น่าทึ่งที่สุด'?
paddotk

20

ฉันเพิ่งลองใช้สิ่งนี้ในInternet Explorer 11บน Windows 7 เพื่อให้แน่ใจว่าองค์ประกอบความหมายHTML5 ที่ใช้ของฉันถูกสร้างขึ้นสำหรับInternet Explorer 8และต่ำกว่า (ผ่านความคิดเห็นตามเงื่อนไข) และเบราว์เซอร์ก็เพิกเฉยต่อสิ่งเหล่านี้ -_-

คุณลักษณะนี้ทำงานได้ดีอย่างสมบูรณ์ในInternet Explorer 10และ Microsoft ก็ต้องจัดการกับมันใช่ไหม

<!--[if lte IE 8]><script src="ie8-html5.js"></script><![endif]-->

นอกเหนือจากนี้ฉันกำลังเพลิดเพลินกับ Internet Explorer ซึ่งทำให้เกิดการเปลี่ยนแปลง


4
ใช่ IE 11 เป็นประสบการณ์ที่ดีกว่าด้วยภาพเคลื่อนไหวทั้งหมดที่ใช้งานได้จริง :) ใช่ MS มีประวัติของการ "ซ่อม" กับสิ่งต่างๆเมื่อผู้ใช้เริ่มคุ้นเคย ดูสิ่งที่พวกเขาทำกับ Windows XP ... อย่างไรก็ตามที่แย่
Rolf

9
เบราว์เซอร์ Internet Explorer แย่มาก ไม่มีความสอดคล้องระหว่างเวอร์ชัน ใครเป็นคนพัฒนาสิ่งนี้? แม้แต่คุณยายของฉันก็สามารถทำงานได้ดีกว่านี้!
Adrien เป็น

4
แก้ไข: พวกเขากำลังแก้ไข (หรือพยายาม) ตั้งแต่ 22 มกราคม 2014 connect.microsoft.com/IE/feedback/details/806767/…
Adrien Be

@AdrienBe อืมนั่นเป็นขั้นตอนที่ถูกต้อง
DylRicho

1
@ แอนโธนี่คำตอบของฉันไม่ถูกต้อง? ยังไง? โดยพื้นฐานแล้วเป็นการบอกว่าคุณเพิ่งพูดอะไรไป
DylRicho

17

สิ่งนี้ใช้ได้ผลสำหรับฉันและดูเหมือนว่าจะเป็นการแก้ไขที่สวยงาม / ง่ายที่สุด ( Internet Explorer 10และInternet Explorer 11ฉันเดาว่าเป็นเบราว์เซอร์เดียวที่รองรับ-ms-high-contract):

@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {  
   /* IE10+ specific styles go here */
}

ยอดเยี่ยมขอบคุณ Microsoft จะฆ่าความสับสนนี้เมื่อใด
Kohjah Breese

ถังสำหรับนั้น IE 11 ไม่ใช้เมทโธด์แบบมีเงื่อนไขเก่า <! - [if IE]>
Gino

8

เมื่อเร็ว ๆ นี้ฉันพบปัญหาเดียวกัน ฉันยังพบว่าความคิดเห็นที่มีเงื่อนไขบางอย่างใช้งานได้:

  • gtและltทำงานได้ดี
  • gteและlteไม่เคยทำงาน

ดังนั้นทางออกที่เป็นไปได้วิธีหนึ่งคือการเปลี่ยนคำสั่งเงื่อนไขเพื่อใช้gtและltตัวดำเนินการ

ทางเลือกอื่น ๆ ซึ่งผมพบว่ามีประโยชน์มากขึ้นคือการใช้บริการเช่นbrowserstack


8

ฉันมีทางออกอื่นสำหรับเรื่องนี้

Internet Explorer 11 ที่เปิดโหมดความเข้ากันได้กับ Internet Explorer 8 มีสตริง 'MSIE 8.0' ดังนั้น:

(ตัวอย่าง PHP)

if (strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 8.0') !== false) {
    $head[] = sprintf('<link rel="stylesheet" href="ie8.css" />');
}

2
ฉันได้ทดสอบโหมดเอกสารแล้วและดูเหมือนจะไม่เปลี่ยนตัวแทนผู้ใช้?!
mgutt

@mgutt คุณพูดถูก มีสองตัวเลือกในการจำลอง - โหมดเอกสารและตัวแทนผู้ใช้ โหมดเอกสารจะเปลี่ยนวิธีการทำงานของเบราว์เซอร์และวิธีการแสดงผลเพจและ User Agent จะเปลี่ยนเบราว์เซอร์ที่บอกไซต์เกี่ยวกับเวอร์ชันของเบราว์เซอร์ (ในตัวอย่างของฉันคือ $ _SERVER ['HTTP_USER_AGENT'] ตัวแปรที่มีข้อมูลนี้) โดยพื้นฐานแล้วคุณต้องเปลี่ยนตัวเลือกทั้งสองนี้เป็น IE8
Andrei Konstantinov

@ Andrew ขอบคุณครับ ตอนนี้ฉันพบการตั้งค่าแล้ว ปัญหาคือการแปลภาษาเยอรมัน พวกเขาแปล "user agent" ด้วย "Zeichenfolge des Benutzer-Agents" และฉันคิดว่านี่หมายถึงชุดอักขระ บางเรื่องไม่ควรแปล;)
mgutt

2
ทางออกนี้ดีที่สุด ฉันได้แปลงเป็น ASP.NET MVC Razor แล้วและใช้งานได้ดี: @ {if (Request.UserAgent.Contains ("MSIE 8.0")) {/ * เมตาแท็กของคุณที่นี่ * /}}
Valerio Gentile

ไซต์นี้เป็นข้อมูลอ้างอิงที่มีประโยชน์สำหรับการเรียงลำดับของสตริงตัวแทนผู้ใช้ทั้งหมด: useragentstring.com/pages/Internet%20Explorer
Drew

4

ฉันมีปัญหาเดียวกัน - มันทำให้ฉันรู้สึกแย่ตลอดเช้า ฉันเพิ่มModernizrและฉันเลือกตัวเลือกทั้งหมดรวมถึง yepnope.js

ตอนนี้การทดสอบของฉันมีลักษณะดังนี้:

Modernizr.load({
            test: Modernizr.canvas,
            nope: ['Content/Site-ie-8.min.css', 'Content/font-awesome-ie7.min.css']
});

ในกรณีนี้ฉันทดสอบผ้าใบ (ซึ่งไม่รองรับก่อน Internet Explorer 9) ดังนั้นฉันจึงโหลดเนื้อหาตามเงื่อนไขของฉัน ตอนนี้ใช้งานได้เมื่อเปลี่ยนโหมดเบราว์เซอร์ในเครื่องมือสำหรับนักพัฒนา Internet Explorer 11


ความคิดเห็นแบบมีเงื่อนไขไม่ต้องอาศัยสคริปต์หรือรหัสของบุคคลที่สาม
Walf

@Walf - จริง แต่ยังไม่รองรับใน IE ดูที่นี่: msdn.microsoft.com/en-us/library/ie/hh801214(v=vs.85).aspx
El Kabong

3

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

  1. ใน IE11 คลิกที่ "Tools"
  2. การตั้งค่ามุมมองที่เข้ากันได้
  3. พิมพ์ URL แล้วคลิกเพิ่ม

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


แต่ผู้เยี่ยมชมเว็บไซต์ของคุณจะต้องทำเช่นเดียวกันเพื่อให้ได้ผลลัพธ์เดียวกัน ทำให้ไม่มีประโยชน์.
paddotk

ใช่. แต่ถ้าคุณกำลังทดสอบ IE เวอร์ชันเก่าผ่านเครื่องมือสำหรับนักพัฒนา IE11 ดังนั้นเมื่อใช้ IE11 แต่ทำงานเป็น IE8 ความคิดเห็นตามเงื่อนไขจะไม่ทำงาน สำหรับคนที่ใช้ IE8 จริงๆความคิดเห็นแบบมีเงื่อนไขจะใช้งานได้ น่าจะเป็น ^ _ ^
Just Plain High

1

ความคิดเห็นที่มีเงื่อนไขบางส่วนใช้งานได้เช่น ' gt' และ ' lt' แต่ตัวอย่างเช่น <!--[if IE 8]>ไม่ทำงาน สิ่งนี้ไม่สะดวกสำหรับนักพัฒนาที่ต้องการลองดูว่าหน้าเว็บของตนมีลักษณะอย่างไรบนเบราว์เซอร์ Internet Explorer เวอร์ชันต่างๆ แต่ก็ไม่ใช่ข่าวร้ายทั้งหมด

แม้ว่าความคิดเห็นแบบมีเงื่อนไขจะไม่ทำงาน แต่คุณยังสามารถทดสอบว่าหน้าเว็บของคุณมีลักษณะอย่างไรใน Internet Explorer แต่ละเวอร์ชันโดยการต่อท้ายสไตล์ชีตทีละรายการสมมติว่าคุณมีสไตล์ชีตสำหรับ Firefox, Chrome, Internet Explorer 10 และ Internet Explorer 11 เรียกว่า ' screen.css' และอีกสไตล์ชีตสำหรับ Internet Explorer 9 เท่านั้นที่เรียกว่า ' screen-ie9.css' และอีกสไตล์หนึ่งสำหรับ Internet Explorer 8 เท่านั้นที่เรียกว่า 'screen-ie8.css '

ในการทดสอบหน้าเว็บของคุณสำหรับ Internet Explorer 9 เท่านั้นคุณสามารถทำได้:

<link rel="stylesheet" href="path/css/screen.css"     type="text/css" />
<link rel="stylesheet" href="path/css/screen-ie9.css" type="text/css" />

และในเครื่องมือสำหรับนักพัฒนา F12 ส่วน Emulation ให้ตั้งค่า 'Document Mode' เป็น '9' และ 'User agent string' เป็น 'Internet Explorer 9' โหมดเอกสารเป็นมาตรฐานที่ Internet Explorer 9 ใช้และสายอักขระตัวแทนผู้ใช้คือเบราว์เซอร์เอง

PS:ฉันสมมติว่า ' screen.css' เป็นสไตล์ชีตพื้นฐานของคุณซึ่งเป็นเหตุผลที่ฉันเรียกมันก่อนว่า "เขียนทับ" Internet Explorer 9 จะแก้ไขในภายหลังโดยเรียก "screen-ie9.css ' วินาที

เมื่อทำเช่นนี้คุณจะสามารถ "แน่ใจ" ได้ (ฉันต้องทดสอบกับ VMs เพื่อที่จะเขียนคำว่า "แน่ใจ" โดยไม่มีเครื่องหมายอัญประกาศ) ว่าคุณกำลังดูหน้าเว็บของคุณบนเบราว์เซอร์ Internet Explorer 9 เมื่อคุณทำการทดสอบและจัดแต่งทรงผมบน Internet Explorer 9 เสร็จแล้วและคุณต้องการทดสอบกับ Internet Explorer 8 คุณสามารถทำเคล็ดลับเดียวกันได้อย่างง่ายดายโดยแทนที่สิ่งนี้:

<link rel="stylesheet" href="path/css/screen-ie9.css" type="text/css" />

ด้วยสิ่งนี้:

<link rel="stylesheet" href="path/css/screen-ie8.css" type="text/css" />

ดังนั้นจึงเป็นเรื่องของความไม่สะดวกเล็กน้อยจากฝั่งของ Microsoft แต่เครื่องมือของนักพัฒนา F12 ใหม่นำเสนอคุณสมบัติที่น่าทึ่งมากมายซึ่งทำให้เรื่องนี้ไม่ใช่เรื่องใหญ่

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