Câu hỏi Nội dung làm gì?


Sự 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-Compatible meta header, vì tôi chỉ muốn nó được hiển thị ở chế độ tiêu chuẩn nhất trong tất cả các phiên bản IE.


1199
2017-07-21 04:29


gốc




Các câu trả lời:


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

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

Tùy thuộc vào những gì các trình duyệt Microsoft bạn hỗ trợ, bạn có thể không cần phải tiếp tục sử dụng X-UA-Compatible nhãn. 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 việc xóa hoàn toàn thẻ này. Nếu bạn sử dụng Twitter Bootstrap và cần phải loại bỏ cảnh báo xác thực, thẻ này phải xuất hiện theo thứ tự được chỉ định của nó. Thông tin bổ sung bên dưới:


Các X-UA-Compatible thẻ meta cho phép tác giả web chọn phiên bản của Internet Explorer mà trang sẽ được hiển thị dưới dạng. IE11 đã thay đổi các chế độ này; xem lưu ý IE11 bên dưới. Microsoft Edge, trình duyệt sẽ được phát hành sau IE11, sẽ chỉ tôn vinh X-UA-Compatible thẻ 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-Compatible , nó sẽ 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 X-UA tương thích, bạn muốn đặt nó gần đầu HEAD của trang nhất có thể. Internet Explorer bắt đầu diễn giải đá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 bằng cách sử dụng công cụ của phiên bản được chỉ định. Đây là một hit hiệu suất vì trình duyệt phải dừng lại và khởi động lại việc phân tích nội dung.

Dưới đây là các tùy chọn của bạn:

  • "IE = cạnh"
  • "IE = 11"
  • "IE = EmulateIE11"
  • "IE = 10"
  • "IE = EmulateIE10"
  • "IE = 9"
  • "IE = EmulateIE9
  • "IE = 8"
  • "IE = EmulateIE8"
  • "IE = 7"
  • "IE = EmulateIE7"
  • "IE = 5"

Để cố gắng hiểu ý nghĩa của từng phương tiện, dưới đâ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ế độ Edge cho Internet Explorer hiển thị nội dung ở chế độ cao nhất có sẵn. Với Internet Explorer 9, điều này tương đương với chế độ IE9. Nếu phiên bản tương lai của Internet Explorer hỗ trợ chế độ tương thích cao hơn, các trang được đặt ở chế độ cạnh sẽ xuất hiện ở chế độ cao nhất được phiên bản đó hỗ trợ. Những 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 hỗ trợ cao nhất 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 (Working Draft), W3C Cascading Style Sheets Cấp 3 Đặc điểm kỹ thuật (Working Draft), Đặc điểm kỹ thuật Scalable Vector Graphics (SVG) 1.0, và những thứ khác. [Biên tập Ghi chú: IE 9 không làm 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 độ tầng lớp W3C của W3C và API bộ chọn W3C; nó cũng cung cấp hỗ trợ giới hạn cho W3C Cascading Style Sheets Cấp 3 đặc điểm kỹ thuật (Working Draft) 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 của Internet Explorer 7, cho dù trang đó có chứa chỉ thị hay không.

  • Giả lập 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ị ở chế độ IE5. Không giống như chế độ IE9, mô phỏng chế độ IE9 tôn trọng chỉ thị.

  • Giả lập 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ị ở chế độ IE5. Không giống như chế độ IE8, mô phỏng chế độ 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. Chỉ thị chế độ tiêu chuẩn được hiển thị trong chế độ tiêu chuẩn Internet Explorer 7 và chỉ thị chế độ quirks được hiển thị ở chế độ IE5. Không giống như chế độ IE7, mô phỏng chế độ 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 Ý: Theo IE10, chế độ quirks hoạt động khác với chế độ của 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 hạn chế trang web với các tính năng được hỗ trợ bởi IE5.5. Trong IE10, chế độ quirks phù hợp với các 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 truy cập "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 IE.

IE11

Từ Microsoft:

Bắt đầu với IE11, chế độ cạnh là chế độ tài liệu ưu tiên; 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 kiểu tài liệu HTML5 để bật chế độ cạnh:

<!doctype html>

Chế độ Edge đã đượ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, chế độ tài liệu sẽ không còn được sử dụng nữa và không còn được sử dụng nữa, 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 tính năng chuyển tiếp, một tính năng có thể không khả dụng trong các phiên bản sau.

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-Compatible thẻ meta cho phiên bản "Cạnh" của IE. Từ Microsoft:

Giới thiệu chế độ tài liệu Edge “sống”

Như chúng tôi đã thông báo vào tháng 8 năm 2013, chúng tôi sẽ không chấp nhận các chế độ tài liệu như của 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ề chế độ tài liệu kế thừa chủ yếu được giới hạn cho các ứng dụng web kế thừa của Enterprise. Với những thay đổi kiến ​​trúc mới, các chế độ tài liệu kế thừa này sẽ được tách biệt khỏi những thay đổi trong chế độ Edge “sống”, giúp đảm bảo mức độ tương thích cao hơn 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 . Phiên bản chính tiếp theo của IE sẽ vẫn tôn trọng các chế độ tài liệu được cung cấp bởi các trang web mạng nội bộ, các trang 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 Internet công cộng sẽ được hiển thị với nền tảng chế độ Edge mới (bỏ qua Tương thích X-UA). Đó là mục tiêu của chúng tôi rằng Edge là chế độ tài liệu "sống" từ đây và không có chế độ tài liệu nào khác được giới thiệu trong tương lai.

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

Chrome = 1 thông tin cho IE

Cũng có chrome=1 mà 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=1 dành cho Khung Chrome của Google được định nghĩa là:

Google Chrome Frame là trình cắm trình duyệt nguồn mở. Người dùng đã cài đặt plugin có quyền truy cập vào công nghệ web mở của Google Chrome và công cụ JavaScript nhanh 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 được bật Google Chrome Frame sử dụng công nghệ hiển thị của Google Chrome, cho phép bạn truy cập 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 bị 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 trở nên hoàn thiện hơn mà không cần phải suy nghĩ về nó.

Nhưng để plugin đó hoạt động, bạn phải sử dụng chrome=1 bên trong X-UA-Compatible thẻ meta.

Bạn có thể tìm thêm thông tin về Chrome Frame đây.

Chú thích: Google Chrome Frame chỉ hoạt động cho IE6 qua IE9và đã ngừng hoạt động vào ngày 25 tháng 2 năm 2014. Bạn có thể tìm thêm thông tin đây. Nhờ @mck cho liên kết.

Xác thực:

HTML5:

Trang sẽ xác thực bằng cách sử dụng Trình xác thực W3 chỉ khi sử dụng <meta http-equiv="X-UA-Compatible" content="IE=Edge">. Đối với các giá trị khác, nó sẽ ném 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=1 nó 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 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 điều này ở cấp độ máy chủ bằng cách đặt tiêu đề HTTP. Như một 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 là 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 thực 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 >).

Twitter Bootstrap

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


Để biết thêm thông tin về X-UA-Compatible xem Microsoft Website Xác định khả năng tương thích tài liệu.

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

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


1466
2017-07-21 05:22



Nếu tôi không có "X-UA-Tương thích" trong tiêu đề, điều gì sẽ xảy ra? - Morgan Cheng
Về cơ bản những gì xảy ra là khi bạn có Tương thích X-UA, nó cho IE biết cách xử lý liên quan đến giá trị bạn đặt (IE = cạnh v.v.) nếu không có IE sẽ hiển thị trang web như thế nào. . Đó có thể là chế độ tương thích hoặc đó có thể là phiên bản mới nhất của IE. Dù Microsoft / IE nghĩ gì là tốt nhất. Có lý? - L84
@TravisJ - Từ sự 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ợ lên đến chế độ IE8, IE9 có thể hỗ trợ chế độ IE9 và như vậy. Tôi đã thêm một số định nghĩa cho mỗi chế độ do Microsoft cung cấp. - L84
@AdrienBe - Tôi hoàn toàn đồng ý! Cho đến nay IE 10 là tốt nhất cho tôi nhưng tôi coi thường bất kỳ phiên bản nào khác. Một lần tôi đã có một 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. Để có được IE để làm việc tôi đã phải thêm một dòng 1.000 mã (chủ yếu là bên thứ 3 javascript) và 2-3 giờ làm việc! Tôi thực sự ghét IE => - L84
Google Chrome Frame sẽ ngừng hoạt động vào tháng 1 năm 2014: blog.chromium.org/2013/06/retiring-chrome-frame.html - mck


Sử dụng content="IE=edge,chrome=1" Bỏ qua X-UA-Compatible chế độ

<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ột loạt các menu, hình ảnh và hộp văn bản nằm ngoài vị trí.

  • Tính năng, đặc điểm 
     Thẻ meta này là bắt buộc để bật javascript::JSON.parse() trên IE8
    (ngay cả khi <!DOCTYPE html> là món quà)

  • Chính xác 
     Hiển thị / Thực hiện HTML / CSS / JavaScript hiện đại hợp lệ hơn (đẹp hơn).

  • Hiệu suất 
     Các Trident rendering engine nên chạy nhanh hơn trong cạnh chế độ.


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 mới nhất (cạnh) của công cụ kết xuất của nó
  • chrome=1 có nghĩa là IE nên sử dụng Công cụ kết xuất của 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 RiaD)

  • 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 Pause

    server {
      #...
      add_header X-UA-Compatible "IE=Edge,chrome=1";
    }
    
  • Varnish proxy như được đề xuất bởi 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 cáo Chế độ cạnh kể từ IE11

Như được chú ý bởi Lynda (xem bình luận), Các thay đổi tương thích trong IE11 đề xuất Chế độ cạnh:

Bắt đầu với IE11, chế độ cạnh là chế độ tài liệu ưu tiên;   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. Khác Trang MSDN không khuyên bạn nên Chế độ cạnh:

Vì chế độ Edge buộc tất cả các trang sẽ đượ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, như X-UA-Compatible tiê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ả phiên bản được hỗ trợ của Internet Explorer sẽ mở   các trang của bạn ở chế độ tiêu chuẩn, sử dụng khai báo kiểu tài liệu HTML5 [...]

Như Ricardo giải thích (trong các ý kiến ​​dưới đây) bất kỳ DOCTYPE (HTML4, XHTML1 ...) có thể được sử dụng để kích hoạt các 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í còn 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ế độ Edge 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.

Nó rất khó hiểu Usman Y nghĩ Clara Onager đã 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" >

Vâng ... Trong phần còn lại của câu trả lời này tôi đưa ra nhiều giải thích hơn tại sao sử dụng content="IE=edge,chrome=1" là một 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 trên thực tế tiêu chuẩn (80% đến 97% thị phần 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 Tiêu chuẩn web, nhà phát triển đã có để kiểm tra trang web của họ bằng IE6. Tình huống đó thật tuyệt vời đối với Microsoft (MS) khi các nhà phát triển web phải mua Các sản phẩm MS (ví dụ: IE không thể được sử dụng mà không cần mua Windows) và việc tạo ra lợi nhuận ở mức không tuân thủ nhiều hơn (tức là Microsoft muốn trở thành các tiêu chuẩn không bao gồm các công ty khác).

Do đó, nhiều trang web chỉ tuân thủ IE6 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. Tệ hơn nữa, 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 tôn trọng 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 thực hiện để render các trang được thực hiện bởi IE6). Khi ngày càng 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 sự 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) ngày càng tôn trọng các tiêu chuẩn web.


Vấn đề không tương thích với 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 IE6 được thiết kế cũ này. Thay vì suy luận về 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 bổ sung thêm dữ liệu (X-UA-Compatible) trong các trang của họ.

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

Ngày nay, IE6 vẫn được sử dụng (0,7% trong năm 2016) (4,5% vào tháng 1 năm 2014) và một số trang web internet vẫn tuân thủ theo chuẩn 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ỉ có 100% chức năng trên IE6. Các công ty / phòng ban này muốn hoãn chi phí di chuyển: các ưu tiên khác, không ai không còn biết trang web / ứng dụng đã được triển khai như thế nào, chủ sở hữu trang web / ứng dụng cũ đã bị 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 Phân phối Linux Trung Quốc đang được phát.

Tự tin với 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ể chỉ đơn giản là luôn sử dụng http-equiv="X-UA-Compatible" content="IE=edge,chrome=1". Để giữ tính 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 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ư Thoái hóa biến chất, Tăng cường tiến bộ và JavaScript không phô trương. (Bạn cũng có thể vui lòng đọc Nhà phát triển web nên xem xét điều gì?.)

Đừng quan tâm đến việc dựng phiên bản IE tốt nhất: đây không phải là công việc của bạn vì 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, 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 giết chế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

Trong năm 2009-2012, tôi đã làm việc cho một công ty sử dụng IE6 làm cho phép một trình duyệt chính thức. Tôi đã phải thực hiện một trang web mạng nội bộ cho IE6 mà thôi. 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ó, nhưng khi công ty chuyển sang IE8, trang web vẫn được hiển thị tốt vì tôi đã sử dụng Firefox và con đom đóm để kiểm tra khả năng tương thích chuẩn trên web;)


312
2018-01-20 13:55



'Chế độ Edge 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/library/jj676915(v=vs.85).aspx - Carl Onager
Xin vui lòng @ClaraOnager mất một thời gian để giải thích những gì là sai trong câu trả lời của tôi (từ quan điểm của bạn). Ngay cả khi MS không khuyên bạn nên sử dụng Chế độ cạnh trong môi trường sản xuất, có lý do chính đáng để sử dụng nó trong môi trường sản xuất. Điều quan trọng là phải làm rõ kỹ thuật các phương pháp hay nhất của chúng tôi. Tôi muốn chia sẻ kiến ​​thức và kinh nghiệm của mình. Tôi cũng hy vọng bạn. Chúng ta có thể cùng nhau cải thiện;) - olibre
Xin chào @Ricardo, tôi đồng ý với bạn. Microsoft nói "Nếu bạn muốn tất cả các phiên bản được hỗ trợ của Internet Explorer để mở các trang của bạn ở chế độ tiêu chuẩn, hãy sử dụng HTML5 [...]" trong phần Hiểu các chế độ tài liệu kế thừa (xem tiền boa). Có lẽ lời giải thích của tôi là không rõ ràng ... Có lẽ tôi đã hiểu lầm điều gì đó ... Tôi đã thay đổi văn bản của tôi ... Bạn nghĩ gì về những thay đổi của tôi? nó có ổn không? Bạn có lời khuyên nào để 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
@ClaraOnager ... trong câu trả lời đầu tiên của bạn, bạn đang trỏ không chính xác, trong trang tham khảo .. 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ứ Edge khác. - Usman Y
Giới thiệu về Chế độ Edge đ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


Sự khác biệt là nếu bạn chỉ xác định DOCTYPE, IE’s Thiết lập chế độ xem tương thích đượ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.

IE Compatibility View Settings dialog

X-UA-Compatible ghi đè cài đặt Chế độ xem tương thích, vì vậy trang sẽ hiển thị ở chế độ tiêu chuẩn bất kể cài đặt trình duyệt. Điều này chế độ tiêu chuẩn lực lượng 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 "Hiển thị tất cả các trang web trong Chế độ xem tương thích" làm 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ô ý kết thúc Danh sách xem tương thích của Microsoft
  • trường hợp người dùng đã thêm trang web của bạn theo cách thủ công 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ế độ xem tương thích trong những trường hợp này bất kể DOCTYPE.

Nếu cả hai meta và tiêu đề HTTP được chỉ định, meta thẻ đượ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 DOCTYPE là dự phòng cuối cùng để quyết định chế độ tài liệu.


52
2018-03-25 19:57



Trong kịch bản mạng nội bộ, theo mặc định IE10 ám trong 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 so với mạng nội bộ chỉ rõ ràng từ văn bản trong ảnh chụp màn hình, chứ 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 rất nhiều so với các câu trả lời khác liên quan đến các trang 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 tốt bằng văn bản: một đoạn làm cho nó rõ ràng là tại sao chúng ta cần thẻ meta. Bravo - Aniket Inge
Tôi ước tôi có thể upvote câu trả lời này hàng trăm lần. Chụp màn hình tiết kiệm cuộc sống ngay tại đó. Huyết áp hạ xuống khi tôi đánh ... - EvilDr
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


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

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

24
2018-02-13 09:25



'Chế độ Edge 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/library/jj676915(v=vs.85).aspx - Carl Onager
Để 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=1 chỉ thị để nó nhắc nhở IE6, 7, 8 người dùng cài đặt / sử dụng Khung Chrome. Cũng HTML5 Boilerplate sử dụng nó. - Ricardo Zea
@ClaraOnager Mặc dù Microsoft nói điều đó, nó không nhất thiết có nghĩa là họ đúng. Tôi đã sử dụng <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> kể từ ngày nó xuất hiện mà không có vấn đề gì cả. Trên thực tế, tôi đã lưu nhóm của tôi và bản thân mình hàng trăm đau đầu đã bằng cách làm cho 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 mà chúng tôi xây dựng. Trái với bạn và Microsoft, tôi khuyên tất cả mọi người nên sử dụng thẻ meta ở trên mỗi lần. Miễn là IE vẫn còn xung quanh, chúng tôi sẽ "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 đã đưa một bước tiến đáng kể đến thế giới của các trình duyệt theo các tiêu chuẩn chính thức. Nó đã đi đến những thái cực như để thậm chí không xác định chính nó như là Internet Explorer! Bây giờ nó nói nó là "Netscape" và không bao gồm bất cứ điều gì trong thông tin trình duyệt để cho đi nó là danh tính thực sự. 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, bạn cần phải ép nó vào IE10 bằng cách thiết lập <meta http-equiv="X-UA-Compatible" content="IE=10">. Sau đó, nó tự báo cáo là Microsoft Internet Explorer. - awe
đối mặt với cùng một vấn đề liên quan, nếu có ai có thể giúp tôi: stackoverflow.com/questions/22013880/… - dsi


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

Ngoài câu trả lời đúng, bạn thực sự có thể xác thực điều này. Vì thẻ meta này chỉ dành 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 bị ảnh hưởng.


22
2018-06-15 14:38



Không nên sử dụng các chú thích 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


Tôi nghĩ rằng sơ đồ này của Microsoft giải thích tất cả. Để cho IE biết cách hiển thị nội dung, DOCTYPE phải làm việc 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.

enter image description here

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


12
2017-11-05 19:40



Đây là một phiên bản cập nhật bao gồm IE9. CHÚA ƠI... ie.microsoft.com/testdrive/ieblog/2010/Jun/… - Spiralis
Và cái này bao gồm IE10: msdn.microsoft.com/en-us/library/ff406036%28v=vs.85%29.aspx  Các chương khác nhau có các sơ đồ riêng của chúng ... - Spiralis
Bạn đã hiểu sai sơ đồ luồng đó. Trong sự vắng mặt của X-UA-Tương thích trình duyệt sẽ tìm <! DOCTYPE>. Nếu nó tìm thấy một, nó ám trong chế độ tiêu chuẩn (aka "EmulateIE8"). Nếu không, nó sẽ trở lại chế độ "Quirks". - Chuck Le Butt


Chỉ cần cho sự hoàn chỉnh, bạn không thực sự phải thêm nó vào HTML của bạn (đó là không xác định 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";

11
2018-02-27 07:11



?? Điều đó có nghĩa là "Tương thích X-UA" không hoạt động trong HTML 5? - Huei Tan
@HueiTan - Tôi nghĩ rằng người đăng nói rằng khi bạn cố gắng xác thực trang bằng cách sử dụng Trình xác thực W3 nó sẽ ném một 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


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

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

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

Nếu không, một số phiên bản IE chỉ đơn giản là bỏ qua nó.

CẬP NHẬT

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

Cách làm cho nó hoạt động với các bình luận có điều kiện.

Bài viết thú vị về thứ tự các phần tử trong đầu. (blogs.msdn.com, dành 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 tất cả các phần tử khác ngoại trừ phần tử title và các phần tử meta khác.


7
2017-09-17 14:03





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


4
2018-03-22 15:07



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 mạng nội bộ. Xem ảnh chụp màn hình trong câu trả lời @AndrewNeitsch. - yzorg