Tại sao IE9 chuyển sang chế độ tương thích trên trang web của tôi?


197

Tôi vừa cài đặt IE9 beta và trên một trang web cụ thể mà tôi đã tạo (HTML5) IE9 chuyển sang chế độ tương thích trừ khi tôi tự nói với nó là không. Tôi đã thử xóa một số phần của trang web nhưng không thay đổi. Bao gồm loại bỏ tất cả CSS bao gồm. Trên một số trang web khác của tôi nó đi tốt.

Ngoài ra, đừng cài đặt thủ công vì sau đó IE9 ghi nhớ cài đặt người dùng và bạn không thể biến nó trở lại tự động (hoặc ít nhất là tôi chưa tìm thấy cách nào, thậm chí không thông qua duyệt web riêng tư và xóa bộ nhớ cache)

Dù sao. Trang web chuyển đến chế độ tương thích: http://alliancesatwar.com/guide/
Một nơi nó hiển thị chính xác: http://geuze.name/basement/ (Tôi không thể đăng nhiều hơn 1 siêu liên kết)

Cả hai đều sử dụng giống nhau doctypevà tất cả. Các trang web đó có rất nhiều điểm chung (ngoài ngoại hình) sử dụng cùng một mẫu cơ bản (mã hóa, thẻ meta, doctype và cùng một javascript)

Sẽ thật tuyệt nếu ai đó có câu trả lời cho tôi! Một trang web HTML5 hiển thị ở chế độ IE7 khá ... khập khiễng.


5
Hãy giải thích "nhảy vào chế độ tương thích"? Nếu bạn thấy làm mới trang và một quả bóng nói rằng IE đã làm mới trang này trong Chế độ xem tương thích do sự cố, điều này có nghĩa là bạn đã tìm thấy một lỗi IE được gọi là "xác nhận cứng" tương tự như sự cố trong công cụ kết xuất . Chúng tôi quan tâm đến việc tìm kiếm và sửa chữa những điều này; vui lòng gửi một lỗi tại connect.microsoft.com/ie . Cảm ơn!
EricLaw

Câu trả lời:


263

Hoạt động trong tài liệu IE9Mode cho tôi.

Nếu không có X-UA-Compatibletiêu đề / meta để đặt mã tài liệu rõ ràng, bạn sẽ có chế độ dựa trên:

  • người dùng đã nhấp vào nút 'chế độ xem tương thích' trong miền đó hay chưa;
  • có lẽ cũng có thể điều này xảy ra tự động do một số nội dung khác trên trang web khiến trình kết xuất của IE8 / 9 bị sập và quay lại trình kết xuất cũ;
  • liệu người dùng đã chọn đặt tất cả các trang web trong chế độ xem tương thích theo mặc định;
  • liệu IE có nghĩ rằng trang web nằm trong mạng nội bộ của bạn hay không và mặc định cho chế độ xem tương thích;
  • liệu trang web đang được đề cập có nằm trong danh sách các trang web yêu cầu xem tương thích hay không.

Bạn có thể thay đổi các cài đặt này từ 'Công cụ -> Cài đặt chế độ xem tương thích' từ menu IE. Tất nhiên menu đó hiện đang bị ẩn một cách lén lút, vì vậy bạn sẽ không nhìn thấy nó cho đến khi bạn nhấn Alt.

Là một tác giả trang web, nếu bạn tự tin rằng trang web của bạn tuân thủ các tiêu chuẩn (hiển thị tốt trong các trình duyệt khác và sử dụng tính năng đánh hơi để quyết định cách sử dụng trình duyệt nào), tôi khuyên bạn nên sử dụng:

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

hoặc tiêu đề HTTP:

X-UA-Compatible: IE=Edge

để có được trình kết xuất mới nhất cho dù phiên bản IE nào đang được sử dụng.


79
Lưu ý quan trọng: nếu IE 9 được cấu hình để luôn hiển thị các trang Intranet ở chế độ tương thích, thì thẻ meta và tiêu đề HTTP sẽ không ghi đè lên đó.
Jacob

29
Như Jacob đề cập, IE có thể mặc định hiển thị tất cả các trang web cục bộ / mạng nội bộ ở chế độ compat. Nhấn alt -> Công cụ Tương thích Xem cài đặt và đảm bảo bạn không chọn hộp kiểm.
Cory Mawhorter

30
Thẻ meta chỉ hoạt động với tôi khi tôi đặt nó ngay sau <head> (xem thêm câu trả lời bên dưới). Khi tôi đặt nó xuống sâu hơn trong phần tử <head>, nó không hoạt động (tôi vẫn có trang bị rách).
Boris van Schooten

13
@Jacob: Đó là loại gây hiểu lầm. Có, bạn sẽ ở chế độ Trình duyệt tương thích và không có lối thoát. Nhưng bạn vẫn có thể sử dụng tiêu đề HTTP để đặt Chế độ tài liệu mà phiên bản IE nào hoạt động tốt nhất cho trang web của bạn. IE = Edge sẽ luôn cung cấp cho bạn công cụ kết xuất mới nhất. Vì vậy, ngay cả khi bạn đang ở chế độ tương thích về mặt kỹ thuật, bạn có thể hiển thị các trang của mình như ở chế độ bình thường. Chỉnh sửa cho tôi nếu tôi sai nhưng ít nhất trang web Intranet của chúng tôi hoạt động chính xác như thế này (ngay cả với cài đặt "Hiển thị trang web mạng nội bộ trong chế độ xem tương thích" được chọn).
mkataja

7
@BorisvanSchooten: Tôi không biết đây có phải là lý do tại sao không, nhưng <meta>các thẻ cần phải nằm trong 512 byte đầu tiên của tệp HTML được xử lý. Tôi nói "đã xử lý" bởi vì bạn có thể có tất cả các loại PHP trên đó, nhưng mã được kết xuất là thứ quan trọng. Tôi đã đến nơi tôi đặt tất cả các nhận xét của mình về <meta>bên dưới các <meta>thẻ, để tôi không phá vỡ yêu cầu.
doubleJ

33

tôi đặt

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

điều đầu tiên sau

<head>

(Tôi đã đọc nó ở đâu đó, tôi không thể nhớ lại)

Tôi không thể tin rằng nó đã làm việc !!


Bạn phải đóng tab và mở một tab mới, bạn đã thử chưa?
Zeb

1
Anh ấy nói "không" không "không";)
Nathan JB

14
+1, đây là một lưu ý rất có giá trị . Nếu bạn có <script>s bên trong <head>trước metacâu lệnh này , nó (IE = edge) sẽ bị bỏ qua.
jakub.g

22

Để buộc IE hiển thị ở chế độ tiêu chuẩn IE9, bạn nên sử dụng

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

Một số điều kiện có thể khiến IE9 nhảy xuống các chế độ tương thích. Theo mặc định, điều này có thể xảy ra trên các trang web mạng nội bộ.


Nó hoạt động trong các trang web khác. Vì vậy, đó không phải là nó. Ngoài ra, thẻ meta đó là xấu vì bạn phải cập nhật thủ công mỗi khi có phiên bản IE mới.
René

2
Xin lỗi tôi không thể khắc phục vấn đề của bạn. Tuy nhiên, tôi đã chỉnh sửa câu trả lời của mình để sử dụng IE=edgethay vào đó, luôn luôn sử dụng công cụ mới nhất hiện có.
Delan Azabani

Giả định của bạn là không chính xác. Các bản demo chỉ định X-UA-Tương thích để ngăn IE hiển thị nút Chế độ xem tương thích vì nếu người dùng đẩy nó, nội dung trang sẽ không hoạt động chính xác.
EricLaw

@ReneGeuze, bạn đã nhầm. Edge luôn đề cập đến phiên bản mới nhất của IE.
neoswf

@DelanAzabani cổng thông tin mạng nội bộ của tôi chuyển sang chế độ tương thích ngay cả khi tôi đã thêm thẻ meta như bạn đề xuất. vui lòng đề xuất làm thế nào nó có thể giải quyết và duy trì trên ví dụ chế độ tiêu chuẩn - tính khả dụng của IE 8, IE 8 sau đó tôi chỉ muốn IE 8.
dsi

6

Tôi đã đăng nhận xét này trên một luồng StackOverflow riêng biệt, nhưng nghĩ rằng nó đáng để lặp lại ở đây:

Đối với ứng dụng ASP.Net nội bộ của chúng tôi, việc thêm thẻ "Tương thích X-UA" trên trang web, trong web.config hoặc trong mã phía sau hoàn toàn không có sự khác biệt.

Điều duy nhất hiệu quả với chúng tôi là tắt thủ công cài đặt này trong IE8:

nhập mô tả hình ảnh ở đây

(Thở dài.)

Vấn đề này dường như chỉ xảy ra với IE8 & IE9 trên các trang mạng nội bộ. Các trang web bên ngoài sẽ hoạt động tốt và sử dụng phiên bản IE8 / 9 chính xác, nhưng đối với các trang web nội bộ, IE9 đột nhiên quyết định đó thực sự là IE7 và không có bất kỳ hỗ trợ HTML 5 nào.

Không, tôi cũng không hiểu logic này.

Giải pháp miễn cưỡng của tôi là kiểm tra xem trình duyệt có hỗ trợ HTML 5 hay không (bằng cách tạo một khung vẽ và kiểm tra xem nó có hợp lệ không) và hiển thị thông báo này cho người dùng nếu nó không hợp lệ:

nhập mô tả hình ảnh ở đây

Nó không đặc biệt thân thiện với người dùng, nhưng khiến người dùng tắt cài đặt phiền phức này dường như là cách duy nhất để cho phép họ chạy các ứng dụng web HTML 5 nội bộ đúng cách.

Hoặc khiến người dùng sử dụng Chrome. ;-)


1

Trang web tại http://www.HTML-5.com/index.html không có thẻ meta Tương thích X-UA nhưng vẫn đi vào Chế độ xem tương thích như được biểu thị bằng biểu tượng "trang bị rách" trong thanh địa chỉ. Làm cách nào để bạn có tùy chọn menu để buộc IE 9 (Phiên bản cuối cùng 9.0.8112.16421) hiển thị trang ở Chế độ tiêu chuẩn? Tôi đã thử nhấp chuột phải vào biểu tượng trang bị rách đó cũng như thủ thuật phím "Alt" để hiển thị các tùy chọn menu bổ sung được đề cập bởi Rene Geuze, nhưng chúng không hoạt động.


4
Xóa bình luận có điều kiện IE xung quanh meta. Bạn đang phục vụ trang như application/xhtml+xml, vì vậy các quy tắc phân tích cú pháp XML được sử dụng; XML không hỗ trợ các bình luận có điều kiện. Trong mọi trường hợp, nó không có nghĩa gì cả; trình duyệt phải chọn một chế độ trước khi nó có thể quyết định những bình luận có điều kiện để diễn giải.
bobince

1

Bên cạnh các trang web hiện đại hơn, nếu bạn đang sử dụng các câu lệnh có điều kiện trên thẻ html của mình theo bản tóm tắt, điều này sẽ vì một lý do nào đó khiến eg9 mặc định ở chế độ tương thích. Cách khắc phục ở đây là để di chuyển các câu lệnh có điều kiện của bạn ra khỏi thẻ html và thêm chúng vào thẻ body, nói cách khác là ra khỏi phần đầu. Bằng cách đó, bạn vẫn có thể sử dụng các lớp đó trong biểu định kiểu của mình để nhắm mục tiêu các trình duyệt cũ hơn.


0

Trông ổn với tôi:

văn bản thay thế

Bạn có chắc chắn rằng bạn đã không cài đặt trên toàn cầu hoặc một cái gì đó? Đây là bản cài đặt beta sạch trên Windows 7. Công cụ dành cho nhà phát triển báo cáo rằng trang đang mặc định ở Chế độ tiêu chuẩn IE9.


Tôi đã có hơn 1 báo cáo về lỗi này. Mặc dù có lẽ nó phải làm với thư mục cơ sở ( alliancesatwar.com ) rằng nó cũng hiển thị tất cả các thư mục con trong chế độ tương thích. Nhưng sau đó tôi có câu hỏi, điều gì trong thư mục gốc của trang web khiến IE hiển thị trang web ở chế độ tương thích? Vì vậy, có thể ít nhất hướng dẫn này được mã hóa đúng. Tôi hy vọng như vậy sau đó.
René

@Rene Strange, tôi chỉ sao chép nó, bằng cách nhấp vào liên kết Hướng dẫn từ trang chủ. Nhưng điều này chỉ xảy ra một lần và sau một vài lần thử tôi vẫn chưa thể tái tạo điều này, chỉ một lần duy nhất
Yi Jiang

0

Gần đây tôi đã phải giải quyết vấn đề này và đây là những gì tôi đã làm:

Trước hết, giải pháp này xoay quanh việc điều chỉnh máy chủ Apache.

Suy nghĩ chính thứ hai là có lỗi trong IE9, điều đó có nghĩa là thẻ meta sẽ không hoạt động, thay vì giải pháp này hãy thử điều này

  • tìm / mở httpd.conf của bạn
  • uncomment / hoặc thêm dòng sau

    LoadModule headers_module modules/mod_headers.so
  • thêm các dòng sau

    <IfModule headers_module>
        Header set X-UA-Compatible: IE=EmulateIE8
    </IfModule>
  • lưu / khởi động lại máy chủ Apache của bạn,

  • duyệt đến trang của bạn với IE9, sử dụng các công cụ như wireshark hoặc fiddler hoặc sử dụng các công cụ dành cho nhà phát triển IE để kiểm tra tiêu đề đang ở đó
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.