Tại sao Internet Explorer 11 không tôn trọng các nhận xét có điều kiện ngay cả khi mô phỏng chế độ tài liệu Internet Explorer 8?


110

Tôi đang sử dụng các công cụ dành cho nhà phát triển Internet Explorer 11 mới để chuyển chế độ tài liệu thành "8", nhưng các nhận xét có điều kiện vẫn bị bỏ qua, tức là chúng không được phân tích cú pháp đúng cách và hoạt động như các nhận xét bình thường. Vì vậy, bất kỳ tệp tham chiếu nào bên trong nhận xét có điều kiện sẽ không được trình duyệt yêu cầu / tải.

Lý do tại sao điều này xảy ra? Nó là một lỗi?

Nếu bạn nghĩ rằng đây thực sự là một lỗi cần được sửa, vui lòng truy cập và nói rằng bạn cũng có thể tái tạo lỗi này trên báo cáo lỗi của Microsoft được báo cáo cho vấn đề này:
Nhận xét có điều kiện không hoạt động khi mô phỏng chế độ tài liệu thông qua F12 Developer Dụng cụ .

Cập nhật: Vấn đề này đã được báo cáo để được khắc phục trong báo cáo lỗi đã đề cập.


18
Tự hỏi mình câu hỏi tương tự! Tôi biết họ đã bỏ nhận xét có điều kiện trong IE10 nhưng IMHO trình giả lập nên xem xét chúng khi thử nghiệm các trình duyệt cũ hơn.
Alexander Rechsteiner

12
Thật vậy, điều đó làm cho tính năng không sử dụng được.
thasmo

3
Câu hỏi thực sự là tại sao bạn lại sử dụng chế độ tương thích? Lời khuyên của tôi là tránh chế độ compat như bệnh dịch. Nó chắc chắn không phù hợp để thử nghiệm, bất kể vấn đề bạn đã mô tả là gì, vì có những lỗi đã biết và các vấn đề liên quan đến nó quay trở lại thời điểm họ giới thiệu chế độ compat lần đầu tiên. Nếu bạn đang kiểm tra khả năng tương thích ngược, bạn thực sự cần sử dụng bản sao thực của IE8 (và IE9, v.v.). Tới modern.ie và tải về máy ảo mà họ cung cấp để thử nghiệm.
Spudley

19
Có một lỗi mở trên trình theo dõi lỗi của IE. Tôi khuyến khích mọi người ghé thăm và nói với Microsoft rằng bạn có thể tái tạo điều này. connect.microsoft.com/IE/feedback/details/806767/…
Evgeny

15
Tôi nghĩ rằng việc sử dụng chế độ tương thích để thử nghiệm có ý nghĩa hơn so với việc tải xuống 1/2 gigabyte hoặc hơn hình ảnh cho mọi trình duyệt. Vì vậy, có lỗi, (và đây có thể là một trong số chúng), nhưng 99% thời gian nó chỉ hoạt động.
Rolf

Câu trả lời:


29

theo đểJacob Rossi [MSFT]

Điều này sẽ được khắc phục trong Bản cập nhật 1 cho IE11, được phát hành vào tuần trước .

Đó đã được đăng vào ngày 22 tháng 4 năm 2014.

Bản thân tôi khi thực hiện một vài thử nghiệm thì có vẻ như điều này đã được khắc phục và tất cả đều đang hoạt động trơn tru trở lại để thử nghiệm trình duyệt tuyệt vời nhất từng được sản xuất ... Internet Explorer!


4
Điều này cần được ủng hộ nhiều hơn. Tôi đã phải tìm hiểu hai câu trả lời tràn ngăn xếp chỉ để đến được đây.
Tek

@Lynda: Bạn có thể đăng phiên bản IE11 của mình không? của tôi là 11.0.9600.17631
Mohamed Hussain

1
@MohamedHussain - Phiên bản của tôi là 11.0.9600.17690IC.
L84

3
Bạn PHẢI saracastic.
paddotk

Về việc IE là 'trình duyệt tuyệt vời nhất'?
paddotk

20

Tôi vừa thử sử dụng điều này trong Internet Explorer 11 trên Windows 7 để đảm bảo rằng các phần tử ngữ nghĩa HTML5 đã sử dụng của tôi đang được tạo cho Internet Explorer 8 trở xuống (thông qua nhận xét có điều kiện) và trình duyệt chỉ bỏ qua chúng. -_-

Tính năng này hoạt động hoàn toàn tốt trong Internet Explorer 10 và Microsoft chỉ cần mày mò với nó, phải không?

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

Ngoài điều này ra, tôi thực sự thích Internet Explorer, nó tạo ra một sự thay đổi.


4
Vâng, IE 11 là một trải nghiệm tốt hơn, với tất cả các hoạt ảnh thực sự hoạt động :). Có MS có một lịch sử "mày mò" với những thứ chỉ khi người dùng bắt đầu làm quen với chúng. Nhìn vào những gì họ đã làm với Windows XP ... "Sửa chữa những gì không bị hỏng", một số người sẽ nói. Dù sao đó hút
Rolf

9
Trình duyệt Internet Explorer quá tệ. Không có sự nhất quán giữa các phiên bản. Ai đã phát triển cái này? ngay cả bà của tôi cũng có thể làm một công việc tốt hơn!
Adrien Be

4
CHỈNH SỬA: họ đang sửa lỗi này (hoặc đang thử) kể từ ngày 22 tháng 1 năm 2014 connect.microsoft.com/IE/feedback/details/806767/…
Adrien Hãy

@AdrienBe Chà, đó chắc chắn là một bước đi đúng hướng.
DylRicho

1
@Anthony Câu trả lời của tôi không chính xác? Làm sao vậy? Về cơ bản, nó đang nói những gì bạn vừa nói.
DylRicho

17

Điều này phù hợp với tôi và có vẻ như đây là cách khắc phục dễ dàng / đơn giản nhất ( Internet Explorer 10Internet Explorer 11, tôi đoán là những trình duyệt duy nhất hỗ trợ -ms-high-contract):

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

Cảm ơn vô cùng. Khi nào thì Microsoft sẽ giết được mớ bòng bong này?
Kohjah Breese

Vì điều đó, IE 11 không tôn trọng các methode cũ có điều kiện. <! - [if IE]>
Gino

8

Gần đây tôi đã gặp phải vấn đề tương tự. Tôi cũng thấy rằng một số nhận xét có điều kiện hoạt động:

  • gtltlàm việc tốt
  • gteltekhông bao giờ làm việc

Vì vậy, một giải pháp tiềm năng sẽ là thay đổi các câu lệnh điều kiện để sử dụng toán tử gtlt.

Một giải pháp thay thế khác, mà tôi thấy hữu ích hơn, là sử dụng một dịch vụ như browserstack .


8

Tôi có một giải pháp khác cho việc này.

Internet Explorer 11 với chế độ tương thích Internet Explorer 8 được bật chứa chuỗi 'MSIE 8.0', vì vậy:

(Ví dụ PHP)

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

2
Tôi đã thử nghiệm các chế độ tài liệu và có vẻ như không thay đổi tác nhân người dùng ?!
mgutt

@mgutt Bạn nói đúng. Có hai tùy chọn trong Chế độ giả lập - Tài liệu và Tác nhân người dùng. Chế độ tài liệu thay đổi cách trình duyệt hoạt động và cách nó hiển thị trang và Tác nhân người dùng thay đổi trình duyệt thông báo cho trang web nào về phiên bản của trình duyệt. (trong ví dụ của tôi, đó là biến $ _SERVER ['HTTP_USER_AGENT'] chứa thông tin này) Vì vậy, về cơ bản bạn cần thay đổi cả hai tùy chọn này thành, chẳng hạn như IE8.
Andrei Konstantinov

@ Andrew Cảm ơn bạn. Bây giờ tôi đã tìm thấy cài đặt. Vấn đề là bản dịch tiếng Đức. Họ đã dịch "tác nhân người dùng" bằng "Zeichenfolge des Benutzer-Agents" và tôi nghĩ điều này có nghĩa là bộ ký tự. Một số điều không nên dịch;)
mgutt

2
Giải pháp này là tốt nhất. Tôi đã chuyển đổi nó thành ASP.NET MVC Razor và nó hoạt động hoàn hảo: @ {if (Request.UserAgent.Contains ("MSIE 8.0")) {/ * thẻ meta của bạn tại đây * /}}
Valerio Gentile

Trang web này là một tài liệu tham khảo hữu ích cho tất cả các hoán vị của chuỗi tác nhân người dùng trông như thế nào: useragentstring.com/pages/Internet%20Explorer
Drew

4

Tôi đã gặp vấn đề tương tự - nó khiến tôi phát điên cả buổi sáng. Tôi đã thêm Modernizr và tôi đã chọn tất cả các tùy chọn, bao gồm cả yepnope.js.

Vì vậy, bây giờ bài kiểm tra của tôi trông như thế này:

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

Trong trường hợp này, tôi kiểm tra canvas (không được hỗ trợ trước Internet Explorer 9), vì vậy tôi tải nội dung có điều kiện của mình. Tính năng này hiện hoạt động khi chuyển đổi chế độ trình duyệt trong các công cụ dành cho nhà phát triển Internet Explorer 11.


Nhận xét có điều kiện không dựa trên tập lệnh hoặc bất kỳ mã nào của bên thứ ba.
Walf

@Walf - true, nhưng chúng cũng không được hỗ trợ trong IE. Xem tại đây: msdn.microsoft.com/en-us/library/ie/hh801214(v=vs.85).aspx
El Kabong

3

Tôi không thấy nó được đề cập ở đây, nhưng trong báo cáo lỗi này , có lưu ý rằng, nếu bạn thay đổi cài đặt chế độ xem tương thích, các nhận xét có điều kiện sẽ hoạt động như mong đợi. Vì thế:

  1. Trong IE11, nhấp vào "Công cụ"
  2. Thiết lập chế độ xem tương thích
  3. Nhập URL và nhấp vào Thêm

Có vẻ như hiện đang hoạt động tốt trên máy chủ cục bộ của tôi. Tôi đã không thử nghiệm điều này rộng rãi nhưng có thể nó sẽ giúp ích cho ai đó.


Nhưng khách truy cập trang web của bạn sẽ phải làm như vậy để có được kết quả tương tự. Làm cho nó trở nên vô dụng.
paddotk

Đúng. Nhưng điều này dành cho nếu bạn đang thử nghiệm các phiên bản IE cũ hơn thông qua các công cụ dành cho nhà phát triển IE11. Vì vậy, sử dụng IE11 nhưng chạy dưới dạng IE8, các chú thích có điều kiện sẽ không hoạt động. Đối với ai đó thực sự sử dụng IE8, các nhận xét có điều kiện sẽ hoạt động. Có lẽ ^ _ ^
Just Plain High

1

Một số nhận xét có điều kiện đang hoạt động, chẳng hạn như ' gt' và ' lt', nhưng chẳng hạn như <!--[if IE 8]>không hoạt động. Điều này chắc chắn gây bất tiện cho các nhà phát triển muốn thử xem trang web của họ trông như thế nào trên các phiên bản trình duyệt Internet Explorer khác nhau, nhưng đó không phải là tin xấu.

Mặc dù các nhận xét có điều kiện không hoạt động, bạn vẫn có thể kiểm tra trang web của mình trông như thế nào trong mỗi phiên bản Internet Explorer bằng cách nối các bảng định kiểu một cách lần lượt: giả sử bạn có biểu định kiểu cho Firefox, Chrome, Internet Explorer 10 và Internet Explorer 11 được gọi là ' screen.css' và một biểu định kiểu khác CHỈ dành cho Internet Explorer 9 được gọi là ' screen-ie9.css' và một biểu định kiểu khác CHỈ dành cho Internet Explorer 8 được gọi là ' screen-ie8.css'.

Để kiểm tra các trang web của bạn CHỈ dành cho Internet Explorer 9, bạn có thể làm như sau:

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

và trong các công cụ dành cho nhà phát triển F12, phần Mô phỏng, đặt 'Chế độ Tài liệu' thành '9' và 'Chuỗi tác nhân người dùng' thành 'Internet Explorer 9'. Chế độ Tài liệu là Tiêu chuẩn mà Internet Explorer 9 sử dụng và chuỗi tác nhân Người dùng là chính trình duyệt.

Tái bút: Tôi giả định rằng ' screen.css' là biểu định kiểu cơ sở của bạn, đó là lý do tôi gọi nó đầu tiên hơn là "ghi đè" các bản sửa lỗi Internet Explorer 9 sau đó bằng cách gọi ' screen-ie9.css' thứ hai.

Bằng cách này, bạn có thể "chắc chắn" (tôi phải kiểm tra với máy ảo để viết từ "chắc chắn" mà không có dấu ngoặc kép) rằng bạn đang xem trang web của mình trên trình duyệt Internet Explorer 9. Khi bạn hoàn tất quá trình kiểm tra và tạo kiểu trên Internet Explorer 9 và bạn muốn kiểm tra với Internet Explorer 8, bạn có thể dễ dàng thực hiện thủ thuật tương tự bằng cách thay thế thủ thuật này:

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

Với cái này:

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

Vì vậy, đó chỉ là vấn đề MINOR bất tiện từ phía Microsoft, NHƯNG các công cụ của nhà phát triển F12 mới đang cung cấp RẤT NHIỀU tính năng tuyệt vời, điều này khiến điều này không phải là vấn đề lớn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.