2011-09-04 29 views
8

Tôi không hiểu ở tất cả<meta http-equiv="X-UA-Compatible" content="..." /> là dành cho ...Điểm tương thích của X-UA là gì?

Ai đó có thể giải thích ...

  • gì nó làm cho các giá trị khác nhau của content?
  • Điều gì bỏ qua nó cho các trình duyệt khác nhau?
  • Động lực cho nó là gì?
  • Tại sao nó tồn tại?
+1

Vâng, các giá trị khác nhau của 'nội dung' là gì? – BoltClock

+0

@BoltClock - "IE = cạnh" "IE = 5" "IE = EmulateIE7" "IE = 7" "IE = EmulateIE8" "IE = 8" "IE = EmulateIE9 " IE = 9 " –

Trả lời

14

Đó là một hack khủng khiếp để phục vụ cho các lỗi khác nhau hoặc triển khai không đầy đủ trong các phiên bản khác nhau của trình duyệt Internet Explorer. Ví dụ: điều này:

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

sẽ hướng dẫn IE9 giả vờ thực sự là IE7 để tránh bất kỳ sự cố nào xảy ra nếu trang web của bạn hoạt động trong IE7 chứ không phải IE9.

+1

Sử dụng chế độ tương thích ngược của IE cố tình thực sự là một điều rất khó để biện minh, tránh được tốt nhất bằng mọi giá. Tuy nhiên, điều quan trọng cần lưu ý ở đây là' content = "IE = Edge" 'có thể hữu ích, vì nó sẽ tránh được vấn đề Chế độ tương thích: Trong trường hợp bản thân IE được cấu hình để sử dụng chế độ tương thích theo mặc định, sử dụng 'IE = cạnh' sẽ buộc IE trở lại chế độ tiêu chuẩn – Spudley

+0

Cũng lưu ý rằng trên các trang mạng nội bộ, bạn có thể cần phải gọi điều này để tắt chế độ tương thích. xem để biết thêm chi tiết: https://stackoverflow.com/a/26348511/601197 – AhsenB

21

Thẻ meta này (hoặc tiêu đề http) chỉ có ý nghĩa đối với IE8 trở lên. Đó là một cách để buộc IE hiển thị trang như một phiên bản cũ hơn. Bỏ qua nó không có hiệu lực, nó chỉ có hiệu lực nếu được sử dụng.

Giá trị có thể là "IE =" theo sau bởi bất cứ điều nào sau đây:

  • Edge - Render như bất cứ điều gì phiên bản mới nhất của IE là
  • IE9 - Render như IE9 trong chế độ tiêu chuẩn
  • Emulate IE9 - Render như IE9 nhưng sử dụng <!DOCTYPE> để xác định chế độ
  • IE8 - Render như IE8 trong chế độ tiêu chuẩn
  • Emulate IE8 - Render như IE8 nhưng sử dụng <!DOCTYPE> để determ ine chế độ
  • IE7 - Render như IE7 trong chế độ tiêu chuẩn
  • Emulate IE7 - Render như IE7 nhưng sử dụng <!DOCTYPE> để xác định chế độ
  • IE5 - Render như IE7 trong chế độ quirks

Ngoài , bạn có thể thêm dấu phẩy theo sau là Chrome = 1 để yêu cầu IE hiển thị trang bằng Google Chrome Frame nếu được cài đặt. Vì vậy, bạn có thể có một thẻ trông như thế này:

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

Hoặc, thay vì đó, bạn cũng có thể chỉ định sử dụng GCF cho cho một phiên bản cụ thể của IE và dưới như thế này:

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

Có nghĩa là sử dụng GCF nếu nó được cài đặt và IE ở phiên bản 8 hoặc thấp hơn, làm cho phiên bản IE được cài đặt mới nhất. Vì vậy, nó là hữu ích để có thể làm cho các phiên bản cũ của IE sử dụng GCF nhưng đó có lẽ không phải là ý định của Microsoft khi họ thực hiện điều này. Nó có thể được sử dụng cho khả năng tương thích với các trang web cũ mà chỉ hoạt động trong các phiên bản cũ của IE và không thể dễ dàng cố định nhưng đó là loại ngớ ngẩn. Cá nhân, tôi thấy nó hữu ích để thử nghiệm.Vì nó thường không đơn giản như vậy để kiểm tra nhiều phiên bản của IE từ một máy phát triển duy nhất, điều này cung cấp một giải pháp tốt.

+3

Câu trả lời hay, nhưng độc giả nên lưu ý rằng [Google Chrome Frame sẽ ngừng hoạt động vào tháng 1 năm 2014] (http://blog.chromium.org/2013/06/retiring-chrome-frame.html) –

Các vấn đề liên quan