<Meta http-Equiv = nội dung X-UA-Tương thích nội dung = = IE IE = edge nghiến> làm gì?


1437

Có gì khác biệt nếu một trang web bắt đầu bằng

<!DOCTYPE html> 
<html> 
  <head> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 

và Nếu trang bắt đầu bằng

<!DOCTYPE html> 
<html> 
  <head> 
     <!-- without X-UA-Compatible meta -->

Nếu không có sự khác biệt, tôi cho rằng tôi có thể bỏ qua X-UA-Compatibletiêu đề meta, vì tôi chỉ muốn nó được hiển thị ở hầu hết chế độ tiêu chuẩn trong tất cả các phiên bản IE.

Câu trả lời:


1703

Cập nhật tháng 10 năm 2015

Câu trả lời này đã được đăng cách đây vài năm và bây giờ câu hỏi thực sự nên là bạn nên cân nhắc sử dụng X-UA-Compatiblethẻ trên trang web của bạn? với những thay đổi Microsoft đã thực hiện cho các trình duyệt của mình (nhiều hơn về những trình duyệt bên dưới).

Tùy thuộc vào những trình duyệt Microsoft bạn hỗ trợ, bạn có thể không cần tiếp tục sử dụng X-UA-Compatiblethẻ. Nếu bạn cần hỗ trợ IE9 hoặc IE8, thì tôi khuyên bạn nên sử dụng thẻ. Nếu bạn chỉ hỗ trợ các trình duyệt mới nhất (IE11 và / hoặc Edge) thì tôi sẽ xem xét bỏ hoàn toàn thẻ này. Nếu bạn sử dụng Twitter Bootstrap và cần loại bỏ các cảnh báo xác thực, thẻ này phải xuất hiện theo thứ tự được chỉ định. Thông tin bổ sung dưới đây:


Các X-UA-Compatiblethẻ meta cho phép tác giả web để lựa chọn những gì phiên bản của Internet Explorer trang nên được trả lại như. IE11 đã thực hiện các thay đổi cho các chế độ này; xem ghi chú IE11 bên dưới. Microsoft Edge , trình duyệt thay thế IE11, chỉ tôn vinh X-UA-Compatiblethẻ meta trong một số trường hợp nhất định. Xem ghi chú Microsoft Edge bên dưới.

Theo Microsoft, khi sử dụng X-UA-Compatiblethẻ, nó phải càng cao càng tốt trong tài liệu của bạn head:

Nếu bạn đang sử dụng thẻ META tương thích X-UA, bạn muốn đặt nó càng gần đầu trang càng tốt. Internet Explorer bắt đầu phiên dịch đánh dấu bằng phiên bản mới nhất. Khi Internet Explorer gặp thẻ META tương thích X-UA, nó 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 điểm nhấn hiệu suất vì trình duyệt phải dừng và khởi động lại phân tích nội dung.

Đây là lựa chọn của bạn:

  • "IE = cạnh"
  • "IE = 11"
  • "IE = Thi đuaIE11"
  • "IE = 10"
  • "IE = Thi đuaIE10"
  • "IE = 9"
  • "IE = Thi đuaIE9
  • "IE = 8"
  • "IE = Thi đua8"
  • "IE = 7"
  • "IE = Thi đua7"
  • "IE = 5"

Để cố gắng hiểu ý nghĩa của từng phương tiện, đây là các định nghĩa do Microsoft cung cấp:

Internet Explorer hỗ trợ một số chế độ tương thích tài liệu cho phép các tính năng khác nhau và có thể ảnh hưởng đến cách hiển thị nội dung:

  • Chế độ cạnh cho Internet Explorer hiển thị nội dung ở chế độ cao nhất hiện có. Với Internet Explorer 9, điều này tương đương với chế độ IE9. Nếu bản phát hành Internet Explorer trong tương lai hỗ trợ chế độ tương thích cao hơn, các trang được đặt thành chế độ cạnh sẽ xuất hiện ở chế độ cao nhất được phiên bản đó hỗ trợ. Các trang tương tự đó vẫn sẽ xuất hiện trong chế độ IE9 khi được xem bằng Internet Explorer 9. Internet Explorer hỗ trợ một số chế độ tương thích tài liệu cho phép các tính năng khác nhau và có thể ảnh hưởng đến cách hiển thị nội dung:

  • Chế độ IE11 cung cấp hỗ trợ cao nhất có sẵn cho các tiêu chuẩn công nghiệp đã được thiết lập và mới nổi, bao gồm HTML5, CSS3 và các tiêu chuẩn khác.

  • Chế độ IE10 cung cấp hỗ trợ cao nhất có sẵn cho các tiêu chuẩn công nghiệp đã được thiết lập và mới nổi, bao gồm HTML5, CSS3 và các tiêu chuẩn khác.

  • Chế độ IE9 cung cấp sự hỗ trợ cao nhất có sẵn cho các tiêu chuẩn công nghiệp đã được thiết lập và mới nổi, bao gồm HTML5 (Bản nháp làm việc), Đặc tả kỹ thuật cấp độ 3 của W3C Cascading Style Sheets (Bản nháp làm việc), Đặc tả đồ họa vectơ có thể mở rộng (SVG) 1.0 và các thông số khác. [Ghi chú của biên tập viên: IE 9 không hỗ trợ hoạt ảnh CSS3].

  • Chế độ IE8 hỗ trợ nhiều tiêu chuẩn đã được thiết lập, bao gồm Đặc tả kỹ thuật cấp độ bảng xếp hạng 2.1 của W3C và API bộ chọn W3C; nó cũng cung cấp hỗ trợ hạn chế cho Đặc tả kỹ thuật cấp 3 của W3C Cascading Style Sheets 3 (Bản nháp làm việc) và các tiêu chuẩn mới nổi khác.

  • Chế độ IE7 hiển thị nội dung như thể nó được hiển thị trong chế độ tiêu chuẩn bởi Internet Explorer 7, cho dù trang có chứa lệnh hay không.

  • Mô phỏng chế độ IE9 yêu cầu Internet Explorer sử dụng chỉ thị để xác định cách hiển thị nội dung. Chỉ thị chế độ tiêu chuẩn được hiển thị trong chế độ IE9 và chỉ thị chế độ quirks được hiển thị trong chế độ IE5. Không giống như chế độ IE9, chế độ Thi đua IE9 tôn trọng chỉ thị.

  • Mô phỏng chế độ IE8 yêu cầu Internet Explorer sử dụng chỉ thị để xác định cách hiển thị nội dung. Chỉ thị chế độ tiêu chuẩn được hiển thị trong chế độ IE8 và chỉ thị chế độ quirks được hiển thị trong chế độ IE5. Không giống như chế độ IE8, chế độ Thi đua IE8 tôn trọng chỉ thị.

  • Mô phỏng chế độ IE7 yêu cầu Internet Explorer sử dụng chỉ thị để xác định cách hiển thị nội dung. Các chỉ thị chế độ tiêu chuẩn được hiển thị trong chế độ tiêu chuẩn Internet Explorer 7 và các chỉ thị chế độ quirks được hiển thị trong chế độ IE5. Không giống như chế độ IE7, chế độ Thi đua IE7 tôn trọng chỉ thị. Đối với nhiều trang web, đây là chế độ tương thích ưa thích.

  • Chế độ IE5 hiển thị nội dung như thể nó được hiển thị ở chế độ quirks bởi Internet Explorer 7, rất giống với cách hiển thị nội dung trong Microsoft Internet Explorer 5.

IE10 LƯU Ý: Kể từ IE10, chế độ quirks hoạt động khác với các phiên bản trước của trình duyệt. Trong IE9 và các phiên bản trước đó, chế độ quirks đã giới hạn trang web ở các tính năng được IE5.5 hỗ trợ. Trong IE10, chế độ quirks phù hợp với sự khác biệt được chỉ định trong đặc tả HTML5.

Cá nhân tôi luôn chọn http-equiv="X-UA-Compatible" content="IE=edge"thẻ meta, vì các phiên bản cũ có nhiều lỗi và tôi không muốn IE quyết định chuyển sang "Chế độ tương thích" và hiển thị trang web của tôi là IE7 so với IE8 hoặc 9. Tôi luôn thích phiên bản mới nhất của I E.

IE11

Từ Microsoft :

Bắt đầu với IE11, chế độ cạnh là chế độ tài liệu ưa thích; nó đại diện cho sự hỗ trợ cao nhất cho các tiêu chuẩn hiện đại có sẵn cho trình duyệt.

Sử dụng khai báo loại tài liệu HTML5 để bật chế độ cạnh:

<!doctype html>

Chế độ cạnh được giới thiệu trong Internet Explorer 8 và đã có sẵn trong mỗi bản phát hành tiếp theo. Lưu ý rằng các tính năng được hỗ trợ bởi chế độ cạnh được giới hạn ở những tính năng được hỗ trợ bởi phiên bản cụ thể của trình duyệt hiển thị nội dung.

Bắt đầu với IE11, các chế độ tài liệu không được dùng nữa và không còn được sử dụng, ngoại trừ trên cơ sở tạm thời. Đảm bảo cập nhật các trang web dựa trên các tính năng cũ và chế độ tài liệu để phản ánh các tiêu chuẩn hiện đại.

Nếu bạn phải nhắm mục tiêu một chế độ tài liệu cụ thể để trang web của bạn hoạt động trong khi bạn làm lại nó để hỗ trợ các tiêu chuẩn và tính năng hiện đại, hãy lưu ý rằng bạn đang sử dụng một tính năng chuyển tiếp, một tính năng có thể không có trong các phiên bản trong tương lai.

Nếu bạn hiện đang sử dụng tiêu đề tương thích x-ua để nhắm mục tiêu chế độ tài liệu cũ, có thể trang web của bạn sẽ không phản ánh trải nghiệm tốt nhất có sẵn với IE11.

Microsoft Edge (Thay thế cho Internet Explorer đi kèm với Windows 10)

Thông tin về X-UA-Compatiblethẻ meta cho phiên bản "Edge" của IE. Từ Microsoft :

Giới thiệu chế độ tài liệu trên mạng sống của Edge

Như chúng tôi đã thông báo vào tháng 8 năm 2013, chúng tôi đang phản đối các chế độ tài liệu kể từ IE11. Với các bản cập nhật nền tảng mới nhất của chúng tôi, nhu cầu về các chế độ tài liệu kế thừa chủ yếu giới hạn ở các ứng dụng web kế thừa của Doanh nghiệp. Với những thay đổi kiến ​​trúc mới, các chế độ tài liệu cũ này sẽ được tách biệt khỏi các thay đổi trong chế độ sống của Edge, điều này sẽ giúp đảm bảo mức độ tương thích cao hơn nhiều cho những khách hàng phụ thuộc vào các chế độ đó và giúp chúng tôi di chuyển nhanh hơn trên các cải tiến trong Edge . IE vẫn sẽ tôn vinh các chế độ tài liệu được phục vụ bởi các trang web mạng nội bộ, các trang web trong danh sách Chế độ xem tương thích và khi chỉ được sử dụng với Chế độ doanh nghiệp.

Các trang web Internet công cộng sẽ được hiển thị với nền tảng chế độ Edge mới (bỏ qua X-UA-Tương thích). Mục tiêu của chúng tôi là Edge là chế độ tài liệu "sống" từ đây và không có chế độ tài liệu nào nữa sẽ được giới thiệu trong tương lai.

Với các thay đổi trong Microsoft Edge không còn hỗ trợ các chế độ tài liệu trong hầu hết các trường hợp, Microsoft có một công cụ quét trang web của bạn để kiểm tra và xem liệu nó có mã không tương thích với Edge không.

Chrome = 1 Thông tin cho IE

Ngoài ra còn chrome=1có bạn có thể sử dụng hoặc sử dụng cùng với một trong các tùy chọn trên như : <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">. chrome=1dành cho Khung Chrome của Google được xác định là:

Google Chrome Frame là một trình cắm trình duyệt nguồn mở. Người dùng đã cài đặt trình cắm có quyền truy cập vào các công nghệ web mở của Google Chrome và công cụ JavaScript tốc độ khi họ mở các trang trong trình duyệt.

Google Chrome Frame liên tục nâng cao trải nghiệm duyệt web của bạn trong Internet Explorer. Nó hiển thị các trang web hỗ trợ Google Chrome Frame bằng công nghệ kết xuất của Google Chrome, cho phép bạn truy cập vào các tính năng HTML5 mới nhất cũng như các tính năng bảo mật và hiệu suất của Google Chrome mà không làm gián đoạn việc sử dụng trình duyệt thông thường của bạn.

Khi Google Chrome Frame được cài đặt, web sẽ hoạt động tốt hơn mà bạn không phải suy nghĩ về nó.

Nhưng cho rằng plug-in để làm việc bạn phải sử dụng chrome=1trong X-UA-Compatiblethẻ meta.

Thông tin thêm về Khung Chrome có thể được tìm thấy ở đây .

Lưu ý: Google Chrome Frame chỉ hoạt động cho IE6 đến IE9 và đã ngừng hoạt động vào ngày 25 tháng 2 năm 2014. Thông tin thêm có thể được tìm thấy ở đây . Cảm ơn @mck cho liên kết.

Thẩm định:

HTML5 :

Trang sẽ chỉ xác nhận bằng Trình xác thực W3 khi sử dụng <meta http-equiv="X-UA-Compatible" content="IE=Edge">. Đối với các giá trị khác, nó sẽ đưa ra lỗi: A meta element with an http-equiv attribute whose value is X-UA-Compatible must have a content attribute with the value IE=edge.Nói cách khác, nếu bạn có IE=edge,chrome=1nó sẽ không xác nhận. Tôi bỏ qua lỗi này hoàn toàn vì các trình duyệt hiện đại chỉ đơn giản là bỏ qua dòng mã này.

Nếu bạn phải có mã hoàn toàn hợp lệ thì hãy xem xét thực hiện việc này ở cấp độ máy chủ bằng cách đặt tiêu đề HTTP. Lưu ý, Microsoft nói, If both of these instructions are sent (meta and HTTP), the developer's preference (meta element) takes precedence over the web server setting (HTTP header). Xem câu trả lời của olibre hoặc câu trả lời của bitinn để biết thêm chi tiết về cách đặt tiêu đề HTTP.

XHTML

Không có vấn đề với xác nhận khi sử dụng <meta http-equiv="X-UA-Compatible" content="IE=Edge" />miễn là thẻ được đóng đúng cách (tức là />so với >).

Bootstrap Twitter

Thẻ này đã được nhóm Bootstrap khuyến nghị mạnh mẽ kể từ ít nhất là năm 2014 và Bootlint , kẻ nói dối được nhóm tác giả twbs tiếp tục đưa ra cảnh báo khi bỏ qua thẻ. Kẻ nói dối phân biệt giữa cảnh báo và lỗi và do đó mức độ nghiêm trọng của việc bỏ qua thẻ này có thể được coi là nhỏ.


Để biết thêm thông tin về việc X-UA-Compatiblexem Trang web Xác định Tương thích Tài liệu của Trang web của Microsoft .

Để biết thêm thông tin về những gì IE hỗ trợ, hãy xem caniuse.com .

Để biết thêm thông tin về các yêu cầu Bootstrap của Twitter, hãy xem trang wiki dự án bootlint .


40
Nếu tôi không có "X-UA-Tương thích" trong các tiêu đề, điều gì sẽ xảy ra?
Morgan Cheng

45
Về cơ bản những gì xảy ra là khi bạn có X-UA-Tương thích, nó sẽ cho IE biết cách ứng xử liên quan đến giá trị bạn đặt (IE = edge, v.v.) nếu không có IE sẽ hiển thị trang web như thế nào nó nên được hiển thị tốt nhất . Đó có thể là chế độ tương thích hoặc đó có thể là phiên bản mới nhất của IE. Bất cứ điều gì Microsoft / IE nghĩ là tốt nhất. Có lý?
L84

2
@TravisJ - Theo hiểu biết của tôi, chế độ cao nhất có sẵn về cơ bản có nghĩa là IE 8 có thể hỗ trợ tối đa các chế độ IE8, IE9 có thể hỗ trợ các chế độ IE9, v.v. Tôi đã thêm một số định nghĩa cho từng chế độ do Microsoft cung cấp.
L84

10
@AdrienBe - Tôi hoàn toàn đồng ý! Cho đến nay IE 10 là tốt nhất đối với tôi nhưng tôi khinh thường bất kỳ phiên bản nào khác. Một lần tôi đã thiết lập trang với một số hiệu ứng khoảng 200-300 dòng HTML và khoảng 20 phút mã hóa. Để IE hoạt động, tôi đã phải thêm 1.000 dòng mã (chủ yếu là javascript của bên thứ 3) và 2-3 giờ làm việc! Tôi thực sự ghét IE =>
L84

9
Google Chrome Frame sẽ ngừng hoạt động vào tháng 1 năm 2014: blog.chromium.org/2013/06/retires-chrome-frame.html
mck

339

Sử dụng content="IE=edge,chrome=1"   Bỏ qua các X-UA-Compatiblechế độ khác

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
                                   -------------------------- 
  • Không có biểu tượng tương thích
    Thanh địa chỉ IE9 không hiển thị nút Chế độ xem tương thích
    và trang cũng không hiển thị mớ lộn xộn của các menu, hình ảnh và hộp văn bản ngoài vị trí.

  • Tính năng
    Thẻ meta này được yêu cầu để bật javascript::JSON.parse()trên IE8
    (ngay cả khi <!DOCTYPE html>có mặt)

  • Kết xuất chính xác
    / Thực thi HTML / CSS / JavaScript hiện đại là hợp lệ hơn (đẹp hơn).

  • Hiệu suất
    Công cụ kết xuất Trident sẽ chạy nhanh hơn trong chế độ cạnh của nó .


Sử dụng

Trong HTML của bạn

<!DOCTYPE html> 
<html> 
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  • IE=edge có nghĩa là IE nên sử dụng phiên bản (cạnh) mới nhất của công cụ kết xuất của nó
  • chrome=1có nghĩa là IE nên sử dụng công cụ kết xuất Chrome nếu được cài đặt

Hoặc tốt hơn trong cấu hình máy chủ web của bạn:
(xem thêm câu trả lời của Rịa )

  • Apache theo đề xuất của pixeline

    <IfModule mod_setenvif.c>
      <IfModule mod_headers.c>
        BrowserMatch MSIE ie
        Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
      </IfModule>
    </IfModule>
    <IfModule mod_headers.c>
      Header append Vary User-Agent
    </IfModule>
    
  • Nginx theo đề xuất của Stef P tạm

    server {
      #...
      add_header X-UA-Compatible "IE=Edge,chrome=1";
    }
    
  • Proxy Varnish theo đề xuất của Lucas Riutzel

    sub vcl_deliver {
      if( resp.http.Content-Type ~ "text/html" ) {
        set resp.http.X-UA-Compatible = "IE=edge,chrome=1";
      }
    }
    
  • IIS (kể từ v7)

    <configuration>
      <system.webServer>
         <httpProtocol>
            <customHeaders>
               <add name="X-UA-Compatible" value="IE=edge,chrome=1" />
            </customHeaders>
         </httpProtocol>
      </system.webServer>
    </configuration>
    

Microsoft khuyến nghị chế độ Edge kể từ IE11

Như Lynda nhận thấy (xem bình luận), các thay đổi Tương thích trong IE11 khuyến nghị chế độ Edge :

Bắt đầu với IE11, chế độ cạnh là chế độ tài liệu ưa thích; nó đại diện cho sự hỗ trợ cao nhất cho các tiêu chuẩn hiện đại có sẵn cho trình duyệt.

Nhưng vị trí của Microsoft không rõ ràng. Một trang MSDN khác không khuyến nghị chế độ Edge :

Vì chế độ Edge buộc tất cả các trang phải được mở ở chế độ tiêu chuẩn, bất kể phiên bản Internet Explorer, bạn có thể bị cám dỗ sử dụng điều này cho tất cả các trang được xem bằng Internet Explorer. Đừng làm điều này, vì X-UA-Compatibletiêu đề chỉ được hỗ trợ bắt đầu với Windows Internet Explorer 8.

Thay vào đó, Microsoft khuyến nghị sử dụng <!DOCTYPE html>:

Nếu bạn muốn tất cả các phiên bản Internet Explorer được hỗ trợ mở các trang của mình ở chế độ tiêu chuẩn, hãy sử dụng khai báo loại tài liệu HTML5 [...]

Như Ricardo giải thích (trong các bình luận bên dưới), mọi DOCTYPE (HTML4, XHTML1 ...) đều có thể được sử dụng để kích hoạt Chế độ tiêu chuẩn, không chỉ DOCTYPE của HTML5. Điều quan trọng là luôn có DOCTYPE trong trang.

Clara Onager thậm chí đã nhận thấy trong một phiên bản cũ hơn của Chỉ định chế độ tài liệu kế thừa :

Chế độ cạnh chỉ dành cho mục đích thử nghiệm; không sử dụng nó trong môi trường sản xuất.

Thật khó hiểu khi Usman Y nghĩ Clara Onager đang nói về:

Ví dụ [...] chỉ được cung cấp cho mục đích minh họa; không sử dụng nó trong môi trường sản xuất.

<meta http-equiv="X-UA-Compatible" content="IE=7,9,10" >

Chà ... Trong phần còn lại của câu trả lời này, tôi đưa ra nhiều lời giải thích tại sao sử dụng content="IE=edge,chrome=1"là một cách thực hành tốt trong sản xuất.


Lịch sử

Trong nhiều năm (2000 đến 2008), thị phần IE là hơn 80% . Và IE v6 được coi là một tiêu chuẩn thực tế (80% đến 97% thị phần trong các năm 2003 , 2004, 2005 và 2006 chỉ dành cho IE6, thị phần nhiều hơn với tất cả các phiên bản IE).

Vì IE6 không tôn trọng các tiêu chuẩn Web , các nhà phát triển phải kiểm tra trang web của họ bằng IE6. Tình hình đó là tuyệt vời cho Microsoft (MS) như các nhà phát triển web đã phải mua MS sản phẩm (ví dụ như IE không thể được sử dụng mà không phải mua Windows), và nó đã được nhiều lợi nhuận định ở lại không tuân thủ (tức là Microsoft muốn trở thành các tiêu chuẩn trừ khác các công ty).

Do đó, nhiều trang web chỉ tuân thủ IE6 và vì IE không tuân thủ tiêu chuẩn web, tất cả các trang web này không được hiển thị tốt trên các trình duyệt tuân thủ tiêu chuẩn. Thậm chí tệ hơn, nhiều trang web chỉ yêu cầu IE .

Tuy nhiên, tại thời điểm này, Mozilla đã bắt đầu phát triển Firefox tuân thủ càng nhiều càng tốt tất cả các tiêu chuẩn web (trình duyệt khác đã được triển khai để hiển thị các trang như được thực hiện bởi IE6). Khi ngày càng có nhiều nhà phát triển web muốn sử dụng các tính năng tiêu chuẩn web mới, ngày càng có nhiều trang web được Firefox hỗ trợ nhiều hơn IE.

Khi chia sẻ thị trường IE đang giảm, MS nhận ra việc không tương thích tiêu chuẩn không phải là một ý tưởng tốt. Do đó, MS bắt đầu phát hành phiên bản IE mới (IE8 / IE9 / IE10) tôn trọng ngày càng nhiều các tiêu chuẩn web.


Sự cố không tương thích web

Nhưng vấn đề là tất cả các trang web được thiết kế cho IE6: Microsoft không thể phát hành các phiên bản IE mới không tương thích với các trang web được thiết kế IE6 cũ này. Thay vì suy ra phiên bản IE một trang web đã được thiết kế, MS yêu cầu các nhà phát triển thêm dữ liệu bổ sung ( X-UA-Compatible) vào trang của họ.

IE6 vẫn được sử dụng vào năm 2016

Ngày nay, IE6 vẫn được sử dụng (0,7% vào năm 2016) (4,5% vào tháng 1 năm 2014) và một số trang web internet vẫn chỉ tuân thủ IE6. Một số trang web / ứng dụng mạng nội bộ được kiểm tra bằng IE6. Một số trang web mạng nội bộ chỉ hoạt động 100% trên IE6. Các công ty / bộ phận này thích hoãn chi phí di chuyển: các ưu tiên khác, không còn ai biết trang web / ứng dụng đã được triển khai như thế nào, chủ sở hữu của trang web / ứng dụng cũ đã phá sản ...

Trung Quốc đại diện cho 50% sử dụng IE6 trong năm 2013, nhưng nó có thể thay đổi trong những năm tiếp theo khi bản phân phối Linux của Trung Quốc đang được phát sóng .

Hãy tự tin với các kỹ năng web của bạn

Nếu bạn (cố gắng) tôn trọng tiêu chuẩn web, bạn có thể luôn luôn sử dụng http-equiv="X-UA-Compatible" content="IE=edge,chrome=1". Để giữ khả năng tương thích với các trình duyệt cũ, chỉ cần tránh sử dụng các tính năng web mới nhất: sử dụng tập hợp con được hỗ trợ bởi trình duyệt cũ nhất mà bạn muốn hỗ trợ. Hoặc nếu bạn muốn đi xa hơn, bạn có thể áp dụng các khái niệm như xuống cấp duyên dáng , tăng cường tiến bộJavaScript không phô trương . (Bạn cũng có thể hài lòng khi đọc Nhà phát triển web nên cân nhắc điều gì? )

Đừng quan tâm đến kết xuất phiên bản IE tốt nhất: đây không phải là công việc của bạn vì các trình duyệt phải tuân thủ các tiêu chuẩn web. Nếu trang web của bạn tuân thủ tiêu chuẩn và sử dụng các tính năng mới nhất vừa phải, do đó trình duyệt phải tuân thủ trang web của bạn .

Hơn nữa, vì có nhiều chiến dịch để tiêu diệt IE6 ( IE6 không còn nữa , chiến dịch MS ), ngày nay bạn có thể tránh lãng phí thời gian với thử nghiệm IE!

Trải nghiệm IE6 cá nhân

Vào năm 2009-2012, tôi đã làm việc cho một công ty sử dụng IE6 như một trình duyệt chính thức được phép . Tôi đã phải triển khai một trang web mạng nội bộ cho IE6. Tôi quyết định tôn trọng tiêu chuẩn web nhưng sử dụng tập hợp con có khả năng IE6 (HTML / CSS / JS).

Thật khó khăn, nhưng khi công ty chuyển sang IE8, trang web vẫn hoạt động tốt vì tôi đã sử dụng Firefox và fireorms để kiểm tra khả năng tương thích tiêu chuẩn web;)


2
Mode Chế độ cạnh chỉ dành cho mục đích thử nghiệm; không sử dụng nó trong môi trường sản xuất. ' Xem msdn.microsoft.com/en-us/l
Library / jj676915 (v = vs85) .aspx

5
Vui lòng @ClaraOnager dành chút thời gian để giải thích điều gì sai trong câu trả lời của tôi (theo quan điểm của bạn). Ngay cả khi MS không khuyến nghị sử dụng chế độ Edge trong môi trường sản xuất, vẫn có những lý do chính đáng để sử dụng nó trong môi trường sản xuất. Điều quan trọng là làm rõ về mặt kỹ thuật thực hành tốt nhất của chúng tôi. Tôi muốn chia sẻ kiến ​​thức và kinh nghiệm của tôi. Tôi hy vọng bạn quá. Chúng ta có thể cùng nhau cải thiện;) Chúc mừng
olibre

2
Xin chào @Ricardo, tôi đồng ý với bạn. Microsoft cho biết "Nếu bạn muốn tất cả các phiên bản Internet Explorer được hỗ trợ mở các trang của mình ở chế độ tiêu chuẩn, hãy sử dụng HTML5 [...]" trong phần Tìm hiểu các chế độ tài liệu cũ (xem Mẹo ). Có lẽ lời giải thích của tôi không rõ ràng ... Có lẽ tôi đã hiểu nhầm điều gì đó ... Tôi đã thay đổi văn bản của mình ... Bạn nghĩ gì về những thay đổi của mình? bạn có sao không Bạn có lời khuyên gì để thay đổi / cải thiện trong câu trả lời của tôi? Cảm ơn phản hồi của bạn. Chúc mừng ;-)
olibre

5
@ClaraOnager ... trong câu trả lời đầu tiên của bạn, bạn đang chỉ ra không chính xác, trong trang tham chiếu .. MS nói không sử dụng trong môi trường sản xuất cho: <meta http-Equiv = "X-UA-Tương thích" content = "IE = 7, 9,10 "> không phải những thứ khác.
Usman Younas

3
Giới thiệu về Chế độ cạnh đang được sử dụng trong môi trường sản xuất. Từ Microsoft:Starting with IE11, edge mode is the preferred document mode; it represents the highest support for modern standards available to the browser.
L84

58

Sự khác biệt là nếu bạn chỉ chỉ định DOCTYPE, Cài đặt Chế độ xem Tương thích của IE được ưu tiên. Theo mặc định, các cài đặt này buộc tất cả các trang web mạng nội bộ vào Chế độ xem tương thích bất kể DOCTYPE. Ngoài ra còn có một hộp kiểm để sử dụng Chế độ xem tương thích cho tất cả các trang web, bất kể DOCTYPE.

Hộp thoại Cài đặt Chế độ xem Tương thích IE

X-UA-Compatibleghi đè Cài đặt Chế độ xem Tương thích, do đó trang sẽ hiển thị ở chế độ tiêu chuẩn bất kể cài đặt trình duyệt. Điều này buộc chế độ tiêu chuẩn cho:

  • trang mạng nội bộ
  • Các trang web bên ngoài khi quản trị viên máy tính đã chọn Tập tin Hiển thị tất cả các trang web trong Chế độ xem tương thích với tư cách là người mặc định, nghĩ rằng các công ty lớn, chính phủ, trường đại học
  • khi bạn vô tình kết thúc trong Danh sách xem tương thích của Microsoft
  • trường hợp người dùng đã thêm thủ công trang web của bạn vào danh sách trong Cài đặt Chế độ xem tương thích

DOCTYPEmột mình không thể làm điều đó; bạn sẽ kết thúc ở một trong các chế độ Chế độ xem tương thích trong những trường hợp này bất kể DOCTYPE.

Nếu cả metathẻ và tiêu đề HTTP được chỉ định, metathẻ sẽ được ưu tiên.

Câu trả lời này dựa trên việc kiểm tra các quy tắc hoàn chỉnh để quyết định chế độ tài liệu trong IE8 , IE9IE10 . Lưu ý rằng nhìn vào DOCTYPElà dự phòng cuối cùng để quyết định chế độ tài liệu.


1
Trong kịch bản mạng nội bộ, theo mặc định IE10 sẽ hiển thị ở chế độ tương thích. Xem stackoverflow.com/questions/13284083/. Thẻ này không được yêu cầu theo mặc định cho internet, nhưng được yêu cầu (theo mặc định) khi sử dụng myintenralserver / myapp . Tôi muốn thêm nhận xét này, vì sự khác biệt giữa internet và mạng nội bộ chỉ rõ ràng từ văn bản trong ảnh chụp màn hình, không phải trong văn bản của bất kỳ câu trả lời nào trên trang.
yzorg

Bạn nói đúng, tôi nên đã rõ ràng hơn về điều đó. Tôi viết lại bài đăng; cho tôi biết nếu có bất cứ điều gì khác tôi nên giải quyết. Cảm ơn!
andrewdotn

Cảm ơn! câu trả lời này rõ ràng hơn nhiều so với các câu trả lời khác liên quan đến các trang web mạng nội bộ. Các câu trả lời khác đi vào chi tiết kỹ thuật là tại sao và như thế nào. Tôi ghét MS IE. Cũng viết tốt: một đoạn làm rõ lý do tại sao chúng ta cần thẻ meta. Bravo
Aniket Inge

3
Tôi ước tôi có thể nâng cao câu trả lời này hàng trăm lần. Màn hình cứu mạng lấy ngay tại đó. Huyết áp hạ thấp khi tôi gõ này ...
EvilDr 17/03/2017

Tuyệt vời tuyệt vời tuyệt vời! Cảm ơn bạn rất nhiều vì câu trả lời này.
Seanosapien

25

Sử dụng công cụ này để buộc IE ẩn nút tương thích trình duyệt gây phiền nhiễu đó trên thanh địa chỉ:

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

1
Mode Chế độ cạnh chỉ dành cho mục đích thử nghiệm; không sử dụng nó trong môi trường sản xuất. ' Xem msdn.microsoft.com/en-us/l
Library / jj676915 (v = vs85) .aspx

4
Để có biện pháp tốt, tôi sử dụng <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">với chrome=1chỉ thị để nó nhắc người dùng IE6, 7, 8 cài đặt / sử dụng Chrome Frame . Ngay cả HTML5 Boilerplate cũng sử dụng nó.
Ricardo Zea

10
@ClaraOnager Mặc dù Microsoft nói vậy nhưng điều đó không nhất thiết là họ đúng. Tôi đã sử dụng <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">kể từ ngày nó ra mắt mà không có vấn đề gì cả. Trên thực tế, tôi đã cứu đội của mình và bản thân mình hàng trăm cơn đau đầu bằng cách khiến IE của người dùng sử dụng công cụ mới nhất của nó để hiển thị các trang chúng tôi xây dựng. Trái ngược với bạn và Microsoft, tôi khuyên mọi người nên sử dụng thẻ meta ở trên mỗi lần . Chừng nào IE còn tồn tại, chúng ta sẽ bị "ép buộc" sử dụng thẻ meta này: p
Ricardo Zea

Điều này đã thay đổi với IE11. Phiên bản này đã có một bước chuyển mạnh mẽ đến thế giới trình duyệt theo các tiêu chuẩn chính thức. Nó đã đi đến cực đoan như thậm chí không nhận mình là Internet Explorer! Bây giờ nó nói đó là "Netscape" và không bao gồm bất cứ điều gì trong thông tin trình duyệt để cho đi danh tính thực sự của nó. Nếu bạn vẫn gặp bất kỳ quirks nào trong trình duyệt IE từ phiên bản này trở đi, bạn cần buộc nó vào IE10 bằng cách cài đặt <meta http-equiv="X-UA-Compatible" content="IE=10">. Sau đó, nó báo cáo chính nó như Microsoft Internet Explorer.
kinh ngạc

phải đối mặt với cùng một vấn đề có liên quan, nếu có ai có thể giúp tôi ra: stackoverflow.com/questions/22013880/...
DSI

25

Vì tôi không thể thêm một bình luận vào câu trả lời được đánh dấu, tôi sẽ chỉ đăng bài này ở đây.

Ngoài câu trả lời đúng, bạn thực sự có thể xác nhận điều này. Vì thẻ meta này chỉ được định hướng cho IE, tất cả những gì bạn cần làm là thêm một điều kiện IE.

<!--[if IE]>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<![endif]-->

Làm điều này giống như thêm bất kỳ câu lệnh điều kiện IE nào khác và chỉ hoạt động cho IE và không có trình duyệt nào khác sẽ bị ảnh hưởng.


4
Không nên sử dụng nhận xét có điều kiện EXCEPT để nhắm mục tiêu HTML cho <= IE9. (Điều này đúng ngay cả khi câu trả lời này được viết)
EKW

18

Tôi nghĩ rằng sơ đồ này từ Microsoft giải thích tất cả. Để cho IE biết cách hiển thị nội dung ,! DOCTYPE phải hoạt động với thẻ meta Tương thích X-UA. ! DOCTYPE tự nó không ảnh hưởng đến việc thay đổi Chế độ Tài liệu IE.

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

http://ie.microsoft.com/testdrive/ieblog/2010/Mar/02_HowIE8DeterminesDocumentMode_3.png


3
Đây là một phiên bản cập nhật bao gồm IE9. OMG ... ie.microsoft.com/testdrive/ieblog/2010/Jun/...
spiralis

3
Và phần này bao gồm IE10: msdn.microsoft.com/en-us/l Library / ff406036% 28v = vs85% 29.aspx Các chương khác nhau có sơ đồ riêng của họ ...
Xoắn ốc

Bạn đã đọc sai sơ đồ dòng chảy đó. Trong sự vắng mặt của Tương thích X-UA, trình duyệt sẽ tìm kiếm <! DOCTYPE>. Nếu nó tìm thấy một, nó sẽ hiển thị trong chế độ tiêu chuẩn (còn gọi là "Thi đuaIE8"). Nếu không, nó sẽ trở lại "Chế độ Quirks".
Chuck Le Mông

Cảm ơn bạn đã tải hình ảnh lên Stackoverflow. Các liên kết ban đầu đến Microsoft đều đã chết.
Elmue

12

Để hoàn thiện, bạn thực sự không phải thêm nó vào HTML của mình (không rõ http-Equiv trong HTML5)

Làm điều này và không bao giờ nhìn lại (ví dụ đầu tiên cho apache , thứ hai cho nginx )

Header set X-UA-Compatible "IE=Edge,chrome=1"

add_header X-UA-Compatible "IE=Edge,chrome=1";

2
@HueiTan - Tôi nghĩ rằng người đăng đang nói rằng khi bạn cố xác thực trang bằng Trình xác thực W3, nó sẽ báo lỗi: Bad value X-UA-Compatible for attribute http-equiv on element meta.- Điều này không có nghĩa là nó sẽ không hoạt động. Nó không phải là mã hợp lệ.
L84

10

Chỉ cần một câu để nói Hướng dẫn Internet Explorer sử dụng công cụ kết xuất mới nhất của nó

<meta http-equiv="x-ua-compatible" content="ie=edge">

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

Để làm cho dòng này hoạt động như mong đợi, hãy chắc chắn rằng:

  1. Đây là yếu tố đầu tiên ngay sau đó <head>
  2. Không có nhận xétđiều kiện nào được sử dụng trước thẻ meta, ví dụ: trên <html>phần tử

Nếu không, một số phiên bản IE chỉ cần bỏ qua nó.

CẬP NHẬT

Hai quy tắc này được đơn giản hóa nhưng chúng rất dễ nhớ và để xác minh. Mặc dù tài liệu MSDN cho biết bạn có thể đặt tiêu đề và các thẻ meta khác trước thẻ này, tôi không khuyên bạn nên làm như vậy.

Làm thế nào để làm việc với các bình luận có điều kiện.

Bài viết thú vị về thứ tự của các yếu tố trong đầu. (blog.msdn.com, cho IE)

TÀI LIỆU THAM KHẢO

Từ tài liệu MSDN :

Các X-UA-Compatible[...] phải xuất hiện trong tiêu đề của trang web (phần HEAD) trước khi tất cả các yếu tố khác, ngoại trừ cho các phần tử tiêu đề và các yếu tố meta khác.


5

nếu bạn sử dụng trang web của mình trong cùng một mạng với máy chủ thì IE thích chuyển sang chế độ tương thích mặc dù DOCTYPE.
Thêm meta http-equiv="X-UA-Compatible" content="IE=Edge" vô hiệu hóa hành vi không mong muốn này.


Một từ khác cho 'cùng mạng với máy chủ' là mạng nội bộ ... vì vậy về cơ bản IE10 bị hỏng theo mặc định cho tất cả các trang web mạng nội bộ. Xem ảnh chụp màn hình trong câu trả lời @AndrewNeitsch.
yzorg

3

Đây là LITERALLY 1 truy vấn google , nhưng ở đây đi:

http://msdn.microsoft.com/en-us/l Library / jj676915 (v = vs85) .aspx

Hiểu các chế độ tài liệu cũ

Sử dụng giá trị sau để hiển thị trang web ở chế độ cạnh, đây là chế độ tiêu chuẩn cao nhất được Internet Explorer hỗ trợ, từ Internet Explorer 6 đến IE11.

<meta http-equiv="x-ua-compatible" content="IE=edge"

Lưu ý rằng đây là chức năng tương đương với việc sử dụng tài liệu HTML5. Nó đặt Internet Explorer vào chế độ tài liệu được hỗ trợ cao nhất. Edge nhất là hữu ích nhất cho các trang web được duy trì thường xuyên được kiểm tra thường xuyên về khả năng tương tác giữa nhiều trình duyệt, bao gồm cả Internet Explorer.

Lưu ý Bắt đầu với IE11, chế độ cạnh được coi là chế độ tài liệu ưa thích. (Trong các phiên bản trước, nó được coi là thử nghiệm.) Để tìm hiểu thêm, hãy xem các chế độ Tài liệu không được dùng nữa. Bắt đầu với Windows Internet Explorer 8, một số nhà phát triển web đã sử dụng phần tử meta chế độ cạnh để ẩn nút Chế độ xem tương thích trên thanh địa chỉ. Kể từ IE11, điều này không còn cần thiết nữa vì nút này đã bị xóa khỏi thanh địa chỉ. Vì nó buộc tất cả các trang phải được mở trong chế độ tiêu chuẩn, bất kể phiên bản Internet Explorer, bạn có thể bị cám dỗ sử dụng chế độ cạnh cho tất cả các trang được xem bằng Internet Explorer. Đừng làm điều này, vì tiêu đề Tương thích X-UA chỉ được hỗ trợ bắt đầu với Internet Explorer 8.

Mẹo Nếu bạn muốn tất cả các phiên bản Internet Explorer được hỗ trợ mở các trang của mình ở chế độ tiêu chuẩn, hãy sử dụng khai báo loại tài liệu HTML5, như trong ví dụ trước.

Ngoài ra trong số các kết quả tìm kiếm là:


2

2.1.3.5 Thẻ meta tương thích X-UA và Tiêu đề phản hồi HTTP

Chức năng này sẽ không được triển khai trong bất kỳ phiên bản nào của Microsoft Edge.

<meta http-equiv="X-UA-Compatible" content="IE=9; IE=8; IE=7; IE=EDGE" />

Xem https://msdn.microsoft.com/en-us/l Library / ff955275 (v = vs85) .aspx

Vâng, tôi biết rằng tôi đến bữa tiệc muộn, nhưng tôi chỉ gặp một số vấn đề và thảo luận, và cuối cùng ông chủ của tôi đã cho tôi xóa X-UA-Compatiblethẻ xóa khỏi tất cả các tài liệu tôi đang làm việc.

Nếu thông tin này đã lỗi thời hoặc không còn phù hợp, vui lòng sửa cho tôi.

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.