Tại sao sử dụng X-UA-Tương thích IE = Edge nữa?


95

Gần đây, tôi đã tham gia một số khóa học trực tuyến và tôi vẫn thấy một số người hướng dẫn thêm thẻ meta sau vào đầu tài liệu của họ theo mặc định:

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

Suy nghĩ dường như cho rằng điều này cũng quan trọng và hữu ích như <meta charset="UTF-8">.

Nhưng tại sao?

Theo tài liệu Modern.ie của Microsoft, đó là "phương pháp hay nhất" để "đảm bảo Internet Explorer sử dụng công cụ mới nhất". Được rồi.

Tuy nhiên, nếu bạn làm theo sơ đồ trên MSDN, nó cho thấy rõ ràng rằng tài liệu không có thông tin `X-UA-Tương thích được chuyển tiếp đến tùy chọn" Chế độ xem tương thích "của người dùng và nếu điều đó chưa được đặt thì chỉ cần làm theo khai báo! DOCTYPE .

Nói cách khác, trừ khi người dùng có sẵn một số cài đặt Chế độ xem tương thích, IE sẽ chỉ làm theo! DOCTYPE của bạn và sử dụng chế độ tiêu chuẩn mới nhất của trình duyệt để hiển thị ... Không cần X-UA-Compatible IE=Edgetuyên bố gì cả.

Như MSDN nói: " Sử dụng khai báo kiểu tài liệu HTML5 để kích hoạt chế độ cạnh ".

Vậy trong những trường hợp nào là X-UA-Compatible IE=Edgecần thiết?

Câu trả lời:


153

Như câu trả lời của @ David đã chỉ ra, trừ khi bạn đang lưu trữ một trang web trong khu vực "Mạng nội bộ cục bộ", có rất ít lý do để đưa <meta http-equiv="X-UA-Compatible" content="IE=edge">vào các trang web của bạn và (theo khuyến nghị về phương pháp hay nhất của Microsoft ) hoàn toàn không có lý do gì để đưa nó vào HTML. (Bạn nên đặt nó trong cấu hình máy chủ hoặc tiêu đề trang web - không phải trong chính HTML.)

Nếu bạn đang cân nhắc sử dụng X-UA-Compatiblebất kỳ đâu trong dự án của mình, bạn nên nhớ rằng Chế độ xem tương thích chỉ ảnh hưởng đến IE8, 9 và 10. Nó chỉ được giới thiệu trong IE8 và đã bị vô hiệu hóa trong IE11.

Cũng xin lưu ý rằng IE11 là phiên bản IE được hỗ trợ chính thức duy nhất tại thời điểm này . Tất cả các phiên bản cũ hơn nên được coi là không an toàn.

Nếu đó không phải là lý do đủ để thuyết phục bạn không sử dụng nó, hãy xem xét rằng Microsoft tuyên bố rằng IE8 trở lên đã tự động hiển thị trong Chế độ tiêu chuẩn khi <!DOCTYPEcó mặt , khiến nó càng trở nên vô nghĩa.

Bạn có thể tự mình xem quy trình mà IE thực hiện để quyết định chế độ tài liệu nào sẽ sử dụng:

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

Như bạn có thể thấy, nếu không có X-UA-Compatiblethẻ meta hoặc tiêu đề HTTP, nó sẽ kiểm tra cài đặt "Chế độ xem tương thích" của người dùng. Nếu người dùng không có bất kỳ thông tin nào cho trang web của bạn, IE sẽ kiểm tra sự hiện diện của một <!DOCTYPEkhai báo. Nếu tìm thấy nó, nó sẽ tự động sử dụng Chế độ tiêu chuẩn mới nhất (còn gọi là "EmulateIEx"). Nếu không, nó sẽ trở lại Chế độ kỳ quặc.

Thậm chí nhiều lý do tại sao bạn không nên sử dụng thẻ meta "Tương thích X-UA" từ chính Microsoft (tôi nhấn mạnh):

Khi Internet Explorer gặp thẻ META Tương thích X-UA, nó sẽ bắt đầu lại bằng cách sử dụng công cụ của phiên bản được chỉ định. Đây là một lỗi hiệu suất vì trình duyệt phải dừng và khởi động lại việc phân tích nội dung.

Nói cách khác, nó làm chậm kết xuất trang ban đầu

Chỉ thị X-UA-Tương thích là một công cụ để cho phép các ứng dụng hoạt động trong phiên bản Internet Explorer mới nhất trong khi các bản cập nhật được thực hiện cho ứng dụng .

Nó chỉ được thiết kế để sử dụng tạm thời.

Phương pháp hay nhất là Tiêu đề HTTP tương thích X-UA . Việc thêm chỉ thị vào tiêu đề phản hồi sẽ cho Internet Explorer biết công cụ nào sẽ sử dụng trước khi bắt đầu phân tích cú pháp nội dung. Điều này phải được cấu hình trong máy chủ của trang web.

Nói cách khác, có những cách tốt hơn để triển khai X-UA-Tương thích nếu bạn thực sự cần.

Bắt đầu từ ngày 12 tháng 1 năm 2016, chỉ phiên bản Internet Explorer mới nhất dành cho hệ điều hành được hỗ trợ mới nhận được hỗ trợ kỹ thuật và cập nhật bảo mật. Internet Explorer 11 là phiên bản cuối cùng của Internet Explorer và sẽ tiếp tục nhận được các bản cập nhật bảo mật, bản sửa lỗi tương thích và hỗ trợ kỹ thuật trên Windows 7, Windows 8.1 và Windows 10 .

IE11 là phiên bản IE được hỗ trợ chính thức duy nhất .

Lý do duy nhất để bao gồm X-UA-Compatiblethẻ meta trong HTML của bạn là ghi đè cài đặt "Chế độ xem tương thích" của người dùng trong IE8, 9 và 10 cho trang web của bạn. Trong hầu hết mọi trường hợp, người dùng sẽ không thay đổi các cài đặt này (tại sao lại như vậy?), Và bây giờ những trình duyệt đó thậm chí không được hỗ trợ nữa.

Tóm lại: Thẻ này đã có ngày của nó.


17
Những biểu đồ đó thật tuyệt vời.
bennettp123

9
Chỉ cần lưu ý, kể từ ngày hôm nay (16/10/2015), đúng là nút compat trong IE11 đã biến mất, nhưng nó vẫn có thể được bật trong menu Cài đặt, vì vậy nó vẫn tồn tại như một khả năng. Chúng tôi sử dụng nó ngày nay vì phần mềm dựa trên web của chúng tôi được sử dụng trong mạng nội bộ của công ty có hệ thống kế thừa yêu cầu chế độ compat để hoạt động, vì vậy chúng tôi phải giải quyết vấn đề đó. Tuy nhiên, mẹo hay về tiêu đề HTTP, cảm ơn vì điều đó!
Doug Johnson

1
Vì vẫn có thể kích hoạt chế độ xem tương thích trong IE11 và các khách hàng doanh nghiệp đang làm điều đó, tiêu đề / thẻ vẫn hữu ích. Tôi có thể hiểu tại sao tiêu đề HTTP lại vượt trội hơn nhưng nếu thẻ nằm ở đầu DOM thì rất ít tác hại được thực hiện và chỉ trong các trình duyệt không bắt đầu ở chế độ Edge. Là một điều khoản chỉ dành cho người dùng không thường xuyên bị mắc kẹt trong chế độ xem tính tương thích, tôi không nghĩ rằng việc sử dụng thẻ (ngay ở đầu <head>) là một cách thực hành tồi.
Tom Boutell

2
@ChuckLeButt Hoặc quản trị viên của họ đã làm điều đó "cho" họ thông qua Chính sách nhóm. Vẫn còn rất nhiều điều trong môi trường công ty, đó là nơi chúng tôi có được cách thắng lớn nhất để có cách vượt qua nó.
Tom Boutell

2
@ChuckLeButt Tôi hiểu quan điểm của bạn và không có windows-fu để mâu thuẫn với nó ... tuy nhiên, khách hàng của chúng tôi nói với chúng tôi rằng họ có IE11 ở chế độ compat trên bảng; làm thế nào họ có được nó ở đó không thực sự là kiến ​​thức được chia sẻ với chúng tôi. Có thể là họ đã thực sự có nó trong một danh sách rõ ràng.
Tom Boutell

18

Nếu người dùng đang duyệt một trang nằm trong vùng "Mạng nội bộ cục bộ" (chẳng hạn như trên mạng nội bộ của công ty), "chế độ xem tương thích" được bật theo mặc định. Đây là khi tôi đã sử dụng "X-UA-Tương thích" để buộc IE sử dụng công cụ mới nhất.


Đúng, đó có vẻ như là một mục đích sử dụng hợp lệ, nhưng trong tình huống đó, bạn có thể muốn đặt nó vào cấu hình máy chủ hoặc các tiêu đề của trang web? stackoverflow.com/a/9338959/199700
Chuck Le Butt

1
Cũng có một phần thay đổi do Microsoft không dùng Chế độ xem tương thích nữa. Ngoài Local Intranet, nếu miền có nhiều miền phụ và ứng dụng trên đó, việc thêm Chế độ xem tương thích cho miền phụ sẽ áp dụng nó cho miền ENTIRE ngay bây giờ (trước đây chỉ áp dụng cho miền phụ cụ thể). Vì vậy, nếu bạn thậm chí chỉ có một ứng dụng có thể yêu cầu nó, bạn nên thực hiện việc này cho tất cả những người khác của mình để tránh các vấn đề hỗ trợ.
kilkenny

@ChuckLeButt, tiêu đề tốt miễn là bạn đang ở trên mạng, nhưng nếu người dùng chọn lưu trang cục bộ, tất cả những gì bạn còn lại là các <meta>thẻ được nhúng . Đó là lý do tại sao nói chung cũng là một phương pháp hay để sao chép các tiêu đề quan trọng dưới dạng <meta>thẻ.
ravilov

1

Miễn là nó được đặt thành “Edge”, nó sẽ xác thực dưới dạng HTML5 và tôi được biết là nó chỉ khiến IE kết xuất lại trang nếu trang web đã hiển thị nó ở chế độ Tương thích. Tuy nhiên, đặt nó trong cấu hình máy chủ ( .htaccess, v.v.) tốt hơn là đưa vào HTML của mỗi trang.

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.