Trên trang của microsoft, họ cho rằng chỉ cần khai báo kiểu tài liệu đơn giản là đủ. Nhưng ngay cả một tài liệu ngắn như thế này cũng rơi trở lại chế độ IE7:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
</body>
</html>
Trên trang của microsoft, họ cho rằng chỉ cần khai báo kiểu tài liệu đơn giản là đủ. Nhưng ngay cả một tài liệu ngắn như thế này cũng rơi trở lại chế độ IE7:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
</body>
</html>
Câu trả lời:
Internet Explorer đưa ra giả định rằng hầu hết các trang web được viết để nhắm mục tiêu các phiên bản IE trước đó và xem xét loại tài liệu, thẻ meta và HTML để xác định chế độ tương thích tốt nhất (đôi khi không chính xác). Ngay cả với loại tài liệu HTML5, IE vẫn sẽ đặt trang web của bạn ở chế độ tương thích nếu đó là trang mạng nội bộ.
Để đảm bảo rằng trang web của bạn luôn sử dụng chế độ tiêu chuẩn mới nhất, bạn có thể đảm bảo rằng bạn Display intranet sites in Compatibly
đã tắt. Tuy nhiên, bạn phải thực hiện việc này trên từng máy cục bộ với máy chủ web (hướng dẫn bên dưới).
Ngoài ra, và tốt hơn nữa, bạn có thể sử dụng X-UA-Compatible
tiêu đề để tắt tính năng này khỏi máy chủ. Điều quan trọng cần lưu ý là sử dụng thẻ meta sẽ không hoạt động!
<!-- Doesn't always work! -->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
Trong suốt MSDN, người ta đã đề cập rằng việc sử dụng tiêu đề máy chủ hoặc thẻ meta sẽ ghi đè ngay cả các trang web mạng nội bộ. Bài viết Tìm hiểu các chế độ tương thích trong Internet explorer 8 nói như sau.
Một số lượng lớn các trang web doanh nghiệp nội bộ được tối ưu hóa cho Internet Explorer 7, do đó, ngoại lệ mặc định này duy trì khả năng tương thích đó. ... Một lần nữa nếu thẻ Meta hoặc tiêu đề http được sử dụng để đặt chế độ tương thích cho tài liệu, nó sẽ ghi đè các cài đặt này.
Tuy nhiên, trong thực tế, điều này sẽ không hoạt động, sử dụng tiêu đề máy chủ lưu trữ là tùy chọn duy nhất hoạt động. Phần bình luận của bài báo cũng cho thấy nhiều ví dụ về vấn đề chính xác này.
Việc sử dụng thẻ Meta cũng có một số vấn đề khác như bỏ qua thẻ nếu nó không nằm ngay dưới <head>
thẻ hoặc nếu có quá nhiều dữ liệu trước thẻ (4k). Nó cũng có thể kích hoạt tài liệu được xem lại trong một số phiên bản IE, điều này sẽ làm chậm quá trình hiển thị. Bạn có thể đọc thêm về những vấn đề này tại bài viết MSDN Phương pháp hay nhất: Sắp xếp HEAD của bạn .
Thêm tiêu đề X-UA-Tương thích
Nếu bạn đang sử dụng .NET và IIS, bạn có thể thêm điều này vào web.config
, bạn cũng có thể thực hiện việc này theo chương trình:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-UA-Compatible" value="IE=edge" />
</customHeaders>
</httpProtocol>
</system.webServer>
Nếu bạn không sử dụng IIS, bạn có thể dễ dàng thực hiện bằng bất kỳ ngôn ngữ nào. Ví dụ, đây là cách thực hiện trong PHP:
header('X-UA-Compatible: IE=edge');
Miễn là X-UA-Compatible
tiêu đề xuất hiện cùng với loại tài liệu HTML5, một trang web sẽ luôn chạy ở chế độ tiêu chuẩn mới nhất.
Tắt Chế độ xem tương thích
Có thể vẫn hữu ích nếu tắt Chế độ xem tương thích. Để làm như vậy, hãy bỏ chọn Display all intranet sites in compatibility view
trong Cài đặt Chế độ xem Tương thích.
Bạn có thể hiển thị điều này bằng cách nhấn Altđể nhận menu.
Chỉnh sửa Câu trả lời này cũng liên quan đến IE9.
alt
để đưa lên thanh công cụ, nó dưới công cụ -> Cài đặt xem compat
Điều này phù hợp với tôi ..
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
X-UA-Compatible
thẻ meta, nhưng vẫn không kích hoạt chế độ tài liệu Tiêu chuẩn IE10 làm Trang mặc định, tôi nhận thấy rằng nếu thẻ meta nằm bên dưới thẻ tập lệnh hoặc chỉ quá xa so với đỉnh của <head>
cây DOM, IE10 kêu lên và đặt chế độ tài liệu thành Tiêu chuẩn IE8. Vì vậy, hãy giữ IE=edge
thẻ meta của bạn đóng <title>
thẻ. Không phải lúc nào cũng là một giải pháp đơn giản cho các trang Wordpress khi nó không được mã hóa cứng trong tệp mẫu tiêu đề. Không chắc IE11 có quan tâm đến vị trí của thẻ meta hay không, nhưng hy vọng điều này sẽ hữu ích cho ai đó.
Hãy thử thêm thẻ sau vào đầu
<meta http-equiv="X-UA-Compatible" content="IE=11,IE=10,IE=9,IE=8" />
IE=Edge
thay
Thẻ meta không có tác dụng gì đối với các trang web mạng nội bộ và vấn đề của tôi là IE10 hiển thị ở chế độ tương thích IE10. Điều giải quyết vấn đề đối với tôi là tiếp tục câu trả lời của @ Jeow và sử dụng giá trị đó trong tiêu đề http bằng cách thêm phần sau vào web.config
trong IIS:
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<!-- <add name="X-UA-Compatible" value="IE=edge" /> not good enough -->
<add name="X-UA-Compatible" value="IE=11,IE=10,IE=9,IE=8" />
</customHeaders>
</httpProtocol>
</system.webServer>
Đối với các mục đích của IE, các trang mạng nội bộ bao gồm các trang công khai không được định tuyến ra bên ngoài - ví dụ: một nhân viên của Stackoverflow làm việc tại văn phòng có thể sẽ thấy stackoverflow.com ở chế độ tương thích.
Nó hoạt động hoàn hảo cho tôi khi tôi làm theo cách sau:
Trên http://msdn.microsoft.com/en-us/library/gg699338(v=vs.85).aspx
Đã sử dụng ví dụ chính xác mà họ cung cấp trong hộp đầu tiên (đã thêm phần còn thiếu </html>
ở dưới cùng), mở nó trong IE10 và các tiêu chuẩn bị bắt buộc, tôi nghĩ bạn có thể cần nội dung thực tế trong html để nó buộc các tiêu chuẩn không chắc chắn.
Đề xuất của tôi là thay thế mã trống của bạn bằng nội dung thực tế (một cái gì đó đơn giản) và xem nó có tác dụng gì.