Ghi đè chế độ tương thích mạng nội bộ IE8


200

Theo mặc định, IE8 buộc các trang web mạng nội bộ vào chế độ tương thích. Tôi đã thử thay đổi tiêu đề meta thành IE8, nhưng nó không thừa nhận tiêu đề meta và chỉ sử dụng cài đặt trình duyệt. Có ai biết làm thế nào để vô hiệu hóa điều này?


1
Hãy thử stackoverflow.com/questions/2742853/ cấp , hoạt động với tôi.
David Kolar

2
Thêm phần này vào trong thẻ tiêu đề trang của bạn: <meta http-Equiv = "X-UA-Tương thích" content = "IE = 8" /> (nhắm mục tiêu phiên bản IE bạn muốn). Lưu ý, điều này sẽ KHÔNG thay đổi thực tế là trình duyệt cho biết nó ở chế độ tương thích (được gọi là chế độ trình duyệt), nhưng trang sẽ hiển thị ở chế độ tiêu chuẩn IE8. Sau đó, bạn sẽ cần thay đổi javascript để kiểm tra "cây đinh ba" nếu bạn kiểm tra IE8 trở lên. Xem: blog.msdn.com/b/mikeormond/archive/2008/09/25/ trên
n00b

@ n00b - điều này không có hiệu lực trên trang web của tôi.
Pete

Hiểu biết của tôi là thẻ meta phải cho tôi ngay sau thẻ đầu. Tôi nhận thấy một số tập lệnh sẽ chèn vào đầu ở chỉ số 0; do đó, thẻ meta sẽ không còn sau đầu.
AMissico

Câu trả lời:


224

Có thể ghi đè chế độ tương thích trong mạng nội bộ.

Đối với IIS, chỉ cần thêm mã dưới đây vào web.config. Làm việc cho tôi với IE9.

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <clear />
      <add name="X-UA-Compatible" value="IE=edge" />
    </customHeaders>
  </httpProtocol>
</system.webServer> 

Tương đương với Apache:

Header set X-UA-Compatible: IE=Edge

Và cho nginx:

add_header "X-UA-Compatible" "IE=Edge";

Và đối với express.js:

res.set('X-UA-Compatible', 'IE=Edge')

20
Đây là câu trả lời chính xác. Thẻ meta không có gì, nhưng thêm tiêu đề phản hồi hoạt động. Thêm thông tin ở đây: social.msdn.microsoft.com/Forums/is/iewebdevelopment/thread/iêu
russau

3
Đồng ý. Đây phải là câu trả lời chính xác vì nó ghi đè chính xác cài đặt mạng nội bộ cho trang web này.
enriquein

9
(để làm rõ: Nó hoạt động cho chế độ tài liệu, nhưng không hoạt động ở chế độ trình duyệt)
codeulike

21
Đây không phải là câu trả lời chính xác. câu trả lời này thay đổi chế độ tài liệu, nó KHÔNG thay đổi "chế độ trình duyệt" quan trọng. Tôi vẫn đang tìm kiếm một giải pháp cho vấn đề đó.
DeveloperChris

4
Đây không phải là câu trả lời chính xác, vì nó là .net cụ thể (thậm chí không thừa nhận thực tế).
Daddy32

84

Michael Irigoyen đúng NHƯNG nó phức tạp hơn một chút ...

nếu bạn đang sử dụng nồi hơi tuyệt vời của Paul Irish thì bạn sẽ có một cái gì đó như sau: -

<!doctype html>
<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]-->
<!--[if IE 7]>    <html class="no-js ie7 oldie" lang="en"> <![endif]-->
<!--[if IE 8]>    <html class="no-js ie8 oldie" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

Điều này sẽ KHÔNG hoạt động như mong đợi và buộc IE vào chế độ tương thích trong Intranet môi trường nếu bạn đã kiểm tra "Hiển thị trang web mạng nội bộ trong chế độ xem tương thích". Bạn cần xóa các nhận xét IE có điều kiện để ngăn chế độ tương thích Intranet.

Vì vậy, đoạn mã sau sẽ hoạt động:

<!doctype html>
<html class="no-js" lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

Về cơ bản nếu bạn kích hoạt các bình luận IE có điều kiện trước <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">câu lệnh thì bạn sẽ bị buộc vào chế độ tương thích trong môi trường Intranet nếu bạn đang chạy IE9 với các cài đặt mặc định.

CẬP NHẬT - THÔNG TIN BỔ SUNG: Nhưng lưu ý rằng có một mẹo sẽ làm cho trình duyệt sôi HTML5:

Thêm một emtpy, bình luận có điều kiện trước DOCTYPE. Và lưu ý rằng, khi bạn làm điều đó , thì bạn cũng có thể thêm các nhận xét có điều kiện xung quanh X-UA-Compatiblechỉ thị, làm cho trang HTML5 có hiệu lực. Ví dụ:

<!--[if HTML5]><![endif]-->
<!doctype html>
<!--[if the boilerplate conditionals goes here<![endif]-->
<head>
<!--[if !HTML5]>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<![endif]-->

Một bài đăng blog được lấy cảm hứng từ phần đầu tiên của câu trả lời này , có nhiều chi tiết hơn. Và nhân tiện: Như đã đề cập trong bài đăng trên blog đó, người ta cũng có thể thay thế nhận xét có điều kiện trước DOCTYPE bằng một nhận xét có điều kiện bán không có điều kiện : <!--[]-->. Vì vậy, như vậy:

<!--[]-->
<!doctype html>
<!--[if the boilerplate conditionals goes here<![endif]-->
<head>
<!--[if !HTML5]>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<![endif]-->

Nhưng lưu ý rằng biến thể sau ( <--[]--><!DOCTYPE html>) sẽ, như được giải thích, ví dụ như câu trả lời này cho câu hỏi khác , sẽ kích hoạt vấn đề cũng biết rằng - đối với các phiên bản IE cũ mà không hỗ trợ X-UA-Compatioble(đọc: cho IE7 và IE6) - đưa trình duyệt vào Chế độ quirks.


Điều này đã không giải quyết vấn đề cho tôi. Tuy nhiên, FYI, việc thêm "X-UA-Tương thích" làm Tiêu đề DID đã khắc phục vấn đề!
Scott Rippey

34

Nếu bạn kéo xuống menu "Công cụ" và chọn "Cài đặt chế độ xem tương thích" Trên hộp thoại đó ở phía dưới là cài đặt "Hiển thị các trang web mạng nội bộ ở chế độ tương thích". Nếu bạn bỏ chọn điều này sẽ giải quyết vấn đề và IE sẽ sử dụng chế độ dựa trên DOCTYPE.


19
Tôi đã không downvote, nhưng tôi đoán đó là vì bạn đã trả lời từ quan điểm của người dùng (những gì người dùng nên làm). Câu hỏi này là của một nhà phát triển web và đang hỏi cách khắc phục vấn đề mà không yêu cầu người dùng phải làm gì cụ thể.
Roy Tinker

1
Ngoài ra, điều này không cho phép duy trì khả năng tương thích với các ứng dụng cũ. Nếu bạn bỏ chọn cài đặt đó, các ứng dụng cũ của bạn có thể bị hỏng mà không có cách nào để cập nhật chúng. Tôi nghĩ rằng người hỏi đang tìm cách buộc chế độ tiêu chuẩn khi tất cả các ứng dụng khác trên mạng nội bộ của họ yêu cầu hộp kiểm tra để kiểm tra chế độ tương thích.
Andrew Lewis

2
Tôi tin rằng anh ấy đã trả lời nó từ góc độ lập trình viên. "... IE sẽ sử dụng cơ sở chế độ trên DOCTYPE". Xem: msdn.microsoft.com/en-us/l Library / ms535242% 28VS85% 29.aspx Nếu công ty đang chạy Active Directory, người quản trị có thể thay đổi cài đặt trình duyệt. Bạn không thể làm điều đó với FireFox!
Nate Zaugg

@AndrewLewis có lẽ. Nhưng, có nút chế độ tương thích trong thanh URL sẽ đặt trình duyệt sử dụng chế độ tương thích cho trang web cụ thể đó. Hoặc bạn có thể thêm chúng bằng tay trong hộp thoại. Một lần nữa, công cụ này có thể được thực hiện trên toàn cầu bởi CNTT.
PilotBob

2
@PilotBob nếu bạn có 120K + người dùng và hàng trăm (nếu không có hàng ngàn) trang web mạng nội bộ để hỗ trợ, đây không phải là một giải pháp khả thi.
yorch

19

Có một sự nhầm lẫn nhất định trong các câu trả lời cho câu hỏi này.

Câu trả lời hàng đầu hiện là giải pháp phía máy chủ đặt cờ trong tiêu đề http và một số nhận xét cho biết rằng giải pháp sử dụng thẻ meta chỉ không hoạt động.

Tôi nghĩ rằng mục blog này cung cấp một cái nhìn tổng quan tốt về cách sử dụng thông tin meta tương thích và theo kinh nghiệm của tôi hoạt động như được mô tả: http://blogs.msdn.com/b/cjacks/archive/2012/02/29/USE-x- ua-tương thích-để-tạo-bền-doanh-web-ứng dụng.aspx

Những ý chính:

  • thiết lập thông tin bằng cách sử dụng thẻ meta và trong tiêu đề cả hai đều hoạt động
  • Thẻ meta được ưu tiên hơn tiêu đề
  • Thẻ meta phải là thẻ đầu tiên, để đảm bảo rằng trình duyệt không xác định công cụ kết xuất trước khi dựa trên chẩn đoán

Một điểm quan trọng (và tôi nghĩ có nhiều nhầm lẫn xuất phát từ thời điểm này) là IE có hai "lớp" chế độ:

  1. Chế độ tài liệu
  2. Chế độ trình duyệt

Chế độ tài liệu xác định công cụ kết xuất (trang web được hiển thị như thế nào).

Chế độ trình duyệt xác định chuỗi IE-Tác nhân người dùng (UA) gửi đến máy chủ, chế độ tài liệu IE mặc định là gì và cách IE đánh giá Nhận xét có điều kiện.

Thông tin thêm về thông tin về chế độ tài liệu so với chế độ trình duyệt có thể được tìm thấy trong bài viết này: http://blogs.msdn.com/b/ie/archive/2010/06/16/ie-s-compabilities-features-for- trang web-developers.aspx? Redirected = true

Theo kinh nghiệm của tôi, dữ liệu meta tương thích sẽ chỉ ảnh hưởng đến chế độ tài liệu . Vì vậy, nếu bạn đang dựa vào phát hiện trình duyệt, điều này sẽ không giúp bạn. Nhưng nếu bạn đang sử dụng tính năng phát hiện thì đây là cách nên làm.

Vì vậy, tôi khuyên bạn nên sử dụng thẻ meta (trong trang html) bằng cú pháp này:

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

Lưu ý: đưa ra danh sách các chế độ trình duyệt mà bạn đã kiểm tra.

Bài đăng trên blog cũng khuyên bạn không nên sử dụng EmulationIEX. Đây là một trích dẫn:

Điều đó đang được nói, một điều tôi thấy lạ là khi một ứng dụng yêu cầu Thi đuaIE7, hoặc Thi đuaIE8. Các chế độ thi đua này là quyết định của chính họ. Vì vậy, thay vì cụ thể về những gì bạn muốn, bạn đang yêu cầu một trong hai điều và sau đó xác định điều nào trong hai điều đó bằng cách tìm mã khác cho DOCTYPE (và sau đó cố gắng hiểu liệu DOCTYPE có cung cấp cho bạn tiêu chuẩn không hoặc quirks tùy thuộc vào nội dung của nó - một nhiệm vụ đôi khi khó hiểu). Thay vì làm điều đó, tôi nghĩ sẽ có ý nghĩa hơn đáng kể khi trực tiếp chỉ định những gì bạn muốn, thay vì đưa ra một câu trả lời mà chính nó là một câu hỏi. Nếu bạn muốn các tiêu chuẩn IE7, thì hãy sử dụng IE = 7, thay vì IE = EmulationIE7. (Lưu ý rằng điều này không có nghĩa là bạn không nên sử dụng DOCTYPE - bạn nên.)


Làm thế nào để thay đổi Chế độ trình duyệt?
Vishnudev K

câu chế độ trình duyệt khó hiểu
Justice Fist

@JusticeFist Vâng, bạn nói đúng, cảm ơn. Tôi đã cố gắng cải thiện nó.
stefan.s

1
@VishnudevK Cách duy nhất tôi biết là sử dụng các công cụ dành cho nhà phát triển. Nhưng bạn có thể muốn một giải pháp lập trình.
stefan.s

9

Hãy thử metatag này:

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

Nó nên buộc IE8 hiển thị dưới dạng Chế độ tiêu chuẩn IE8 ngay cả khi "Hiển thị các trang web mạng nội bộ trong chế độ xem tương thích" được chọn [cho mạng nội bộ hoặc tất cả các trang web], tôi đã tự thử trên IE 8.0.6


15
Không nó không.
Dennis C

11
Điều này thực sự chính xác, nhưng nó PHẢI xuất hiện trước bất kỳ và tất cả các thẻ META trên trang nếu không nó sẽ không hoạt động.
Michael Irigoyen

2
Điều này không làm việc cho tôi. Theo như tôi có thể nói với IE8 "Hiển thị các trang web mạng nội bộ ở chế độ tương thích" là không thể ghi đè
codeulike

6
(để làm rõ: Nó hoạt động cho chế độ tài liệu, nhưng không phải chế độ trình duyệt. Vì vậy, kết xuất đã được sửa, nhưng trình duyệt vẫn giả vờ là IE7)
codeulike

7

Quản trị viên hệ thống của chúng tôi đã giải quyết vấn đề này bằng cách bỏ chọn hộp trên toàn cầu cho tổ chức của chúng tôi. Người dùng thậm chí không cần phải đăng xuất.

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


1
Giải pháp này hoạt động hoàn hảo nếu tất cả các trang web trên mạng nội bộ có thể sử dụng các tiêu chuẩn web mới nhất. Tuy nhiên, nếu một số không thể thì phương pháp này sẽ vô tình phá vỡ những ... Tôi sẽ thận trọng tiếp cận.
ᴍᴀᴛᴛ

4

Tôi đã tìm thấy một câu trả lời hoạt động cho phép ghi đè Chế độ xem tương thích Intranet đã kiểm tra. Chỉ cần thêm vào sự kiện OnInit của trang của bạn dòng này (không cần meta hoặc web.config customHeader):

Response.AddHeader("X-UA-Compatible", "IE=EmulateIE8");

1
Câu trả lời dành riêng cho nền tảng phát triển ... mà không cần chỉ định nền tảng. Tôi đoán bạn đang nói về Visual Studio .NET? Theo như tôi có thể nói 'sự kiện OnInit' không tồn tại (trong Javascript, Java, PHP, ....)
Stijn de Witt


3

Tôi đã có thể ghi đè chế độ tương thích bằng cách chỉ định thẻ meta là TAG ĐẦU TIÊN trong phần đầu, không chỉ thẻ meta đầu tiên mà còn và chỉ là TAG RẤT ĐẦU TIÊN .

Cảm ơn @ stefan.s đã đưa tôi vào câu trả lời tuyệt vời của bạn. Trước khi đọc tôi đã có:

DID NÀY KHÔNG LÀM VIỆC

<head> 
<link rel="stylesheet" type="text/css" href="https://stackoverflow.com/qmuat/plugins/editors/jckeditor/typography/typography.php"/>
<meta http-equiv="x-ua-compatible" content="IE=9" >

di chuyển thẻ liên kết ra khỏi đường và nó hoạt động

CÔNG TRÌNH NÀY :

<head><meta http-equiv="x-ua-compatible" content="IE=9" >

Vì vậy, ứng dụng khách IE8 được đặt để sử dụng khả năng tương thích sẽ hiển thị trang dưới dạng chế độ Tiêu chuẩn IE8 - nội dung = 'IE = 9' có nghĩa là sử dụng tiêu chuẩn cao nhất có sẵn lên đến và bao gồm IE9.


2

Đây không phải là một giải pháp chính xác, nhưng tôi cảm thấy đó là giải pháp tốt nhất. Trên các trang mạng nội bộ của chúng tôi, chúng tôi nói với mọi người rằng Firefox chỉ có thể truy cập được, chúng tôi không vui lòng với người dùng IE quanh đây. Kiểm tra tác nhân người dùng trên máy chủ hoặc phía máy khách và từ chối họ truy cập từ IE. Và tôi là một lập trình viên .NET.


1
Tôi thích ý tưởng của bạn. nhưng chúng tôi không có firefox ở đây.
Dennis C

22
Tệ nhất Gợi ý. Không bao giờ. Điều đó cũng tệ như tất cả các trang web mạng nội bộ chỉ dành cho IE. Hãy thử làm thêm một chút công việc và làm cho công cụ của bạn hoạt động trên tất cả các trình duyệt phổ biến. Nó không khó lắm đâu.
mhenry1384

2
@ mhenry1384 Muốn giải thích lý do tại sao đề xuất khủng khiếp về hệ thống mạng nội bộ bị khóa? Bạn không phải hỗ trợ quark cho các trình duyệt cũ. Bạn biết người dùng của bạn sẽ có được trải nghiệm dự định. Đó không phải là một hệ thống công cộng, ai quan tâm, bạn vẫn hỗ trợ IE 5.5 chứ? Tôi nói với người dùng công cộng của tôi để cập nhật. Tôi không nên lãng phí thời gian của mình cho các hệ thống phụ trợ, dù sao đó cũng là công chúng cần tôi. Không giống như tôi khóa nó xuống IE 6 và yêu cầu ActiveX như một số. Chẳng hạn, hệ thống của tôi cho phép Firefox 6 trở lên. Vì vậy, nếu Firefox 27 xuất hiện, nó vẫn hoạt động. Hoặc là downvote tôi hoặc đưa ra một cuộc tranh luận thực tế.
Ca

2
Mọi trang web mạng nội bộ mà tôi đã sử dụng đã bị khóa với một trình duyệt cụ thể đều bị khóa với IE. Điều này làm tôi phát điên, vì tôi ghét IE nhiều như anh chàng tiếp theo. Buộc người dùng của bạn sử dụng trình duyệt bạn chọn (không phải của họ), ngay cả khi đó là bất cứ điều gì NHƯNG IE, dường như trái ngược với web, ngay cả web mạng nội bộ. Thông thường, thật khó để có một trang web hoạt động trong IE7 / 8/9, đặc biệt nếu bạn sử dụng các thư viện như jQuery. Hãy để người dùng sử dụng những gì họ muốn.
mhenry1384

2
Ví dụ, một trang web được viết cho Firefox 10 sẽ hầu như luôn hoạt động tốt trên IE9 mà không cần sửa đổi. Vì vậy, hạn chế người dùng sử dụng IE9 có nghĩa là có điều gì đó khác đang diễn ra. Nó cho thấy bạn đang thực hiện một nhiệm vụ ý tưởng, không phải ai đó đang cố gắng viết phần mềm web tốt. Nếu đó chỉ là một câu hỏi về việc không có thời gian để kiểm tra các trình duyệt khác ngoài Firefox, bạn có hạn chế mọi người sử dụng Opera không? [Xin lỗi vì quá dài dòng. Tôi nên quay lại để khắc phục sự cố IE8 chết tiệt này Tôi đang gặp phải ... :-)]
mhenry1384

1

Tôi đã đấu tranh với vấn đề này và muốn giúp cung cấp một giải pháp và cái nhìn sâu sắc độc đáo.

Một số khung dựa trên AJAX nhất định sẽ chèn javascripts và bảng định kiểu vào đầu <head>và làm điều này dường như để ngăn giải pháp thẻ meta được thiết lập tốt hoạt động đúng. Trong trường hợp này, tôi thấy rằng việc tiêm trực tiếp vào tiêu đề phản hồi HTTP, giống như câu trả lời của Andras Csehi sẽ giải quyết vấn đề.

Tuy nhiên, đối với những người sử dụng Java Servlets, một cách tốt để giải quyết vấn đề này là sử dụng ServletFilter.

public class EmulateFilter implements Filter {

@Override
public void destroy() {
}

@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,
        FilterChain arg2) throws IOException, ServletException {
    HttpServletResponse response = ((HttpServletResponse)arg1);
    response.addHeader("X-UA-Compatible", "IE=8");
    arg2.doFilter(arg0, arg1);
}

@Override
public void init(FilterConfig arg0) throws ServletException {
}

}

1

Chúng ta có thể giải quyết vấn đề này trong môi trường Spring-Apache-tomcat bằng cách thêm một dòng duy nhất trong phương thức RequestInterceptor -

//before the actual handler will be executed
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler)
throws Exception {

// Some logic

// below statement ensures IE trusts the page formatting and will render it acc. to IE 8 standard.
response.addHeader("X-UA-Compatible", "IE=8"); 

return true;
}

Tham khảo từ - Cách tạo bộ lọc và sửa đổi tiêu đề phản hồi Nó bao gồm cách chúng tôi có thể giải quyết vấn đề này thông qua RequestInterceptor (Spring).


0

Nếu bạn muốn trang Web của mình buộc chế độ tiêu chuẩn IE 8, thì hãy sử dụng thẻ meta này cùng với DOCTYPE hợp lệ:

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

Lưu ý giá trị "Thi đuaIE8" thay vì "IE8" đơn giản.

Theo các nhà phát triển IE, điều này sẽ, "Hiển thị các DOCTYPE tiêu chuẩn ở chế độ Tiêu chuẩn IE8; Hiển thị các DOCTYPE trong chế độ Quirks. Sử dụng thẻ này để ghi đè chế độ xem tương thích trên máy khách và buộc Tiêu chuẩn theo Tiêu chuẩn IE8."

thông tin thêm về bài đăng trên blog IE này: http://bloss.msdn.com/b/ie/archive/2008/08/27/int Giới thiệu-compabilities-view.aspx


0

Câu hỏi này là một bản sao của chế độ trình duyệt Force "Internet Explorer 8" trong mạng nội bộ .

Các câu trả lời ở đó chỉ ra rằng không thể tắt chế độ xem tương thích (về phía máy chủ) - https://stackoverflow.com/a/4130343/24267 . Đó chắc chắn là trường hợp, vì không có gợi ý nào tôi đã thử làm việc. Trong IE8, "Chế độ trình duyệt" được đặt thành chế độ xem Tương thích Internet Explorer 8 cho dù bạn gửi loại tiêu đề tương thích X-UA nào.

Tôi đã phải thực hiện một số xử lý đặc biệt cho IE7 và chế độ tương thích, khiến trình duyệt hiển thị bằng IE8 nhưng báo cáo đó là IE7, đã phá vỡ mã của tôi. Đây là cách tôi sửa mã của mình (tôi biết đây là một vụ hack khủng khiếp và tôi nên thử nghiệm các tính năng không phải phiên bản trình duyệt):

isIE8 = navigator.appVersion.indexOf ("MSIE")! = -1 && parseFloat (navigator.appVersion.split ("MSIE") [1]) == 8;
if (! isIE8 && navigator.appVersion.indexOf ("MSIE")! = -1 && parseFloat (navigator.appVersion.split ("MSIE") [1]) == 7 && navigator.appVersion.indexOf ("Trident ! = -1) {
    // Nói dối, đây là IE8 trong chế độ tương thích.
    isIE8 = đúng;
}

0

Có cùng một vấn đề. Nó hoạt động bằng cách sử dụng

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

0

Thêm phần này vào trong thẻ tiêu đề trang của bạn (nhắm mục tiêu phiên bản IE bạn muốn):

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

Lưu ý, điều này sẽ KHÔNG thay đổi thực tế là trình duyệt cho biết nó ở chế độ tương thích (được gọi là chế độ trình duyệt), nhưng trang sẽ hiển thị ở chế độ tiêu chuẩn IE8. Nếu VẪN không hiển thị như bạn muốn, thì có lẽ là do bạn có javascript đang kiểm tra sai phiên bản IE. Xem bài đăng trên blog sau để xác định thuộc tính nào bạn nên khóa vì ngay cả khi bạn đặt thẻ meta X-UA-Tương thích, chuỗi tác nhân người dùng vẫn sẽ nói MSIE 7.0 .

Trong trường hợp của tôi, để khắc phục, tôi phải thêm một kiểm tra cho chế độ Tương thích IE7. Tôi đã làm như vậy bằng cách sử dụng mã javascript đơn giản:

                //IE8 and later will have the word 'trident' in its user agent string.
                if (navigator.userAgent.indexOf("Trident")>-1) { //do something }

0

Đối với bất kỳ ai khác đang đọc điều này đang tìm cách vô hiệu hóa điều này thông qua GPO cho tất cả người dùng, đây là cài đặt:

Cấu hình máy tính / Mẫu quản trị / Cấu phần Windows / Internet Explorer / Chế độ xem tương thích / Bật Chế độ tiêu chuẩn Internet Explorer cho mạng nội bộ cục bộ

mặc dù chỉnh sửa web.config đã sửa nó cho tôi.


Để đi tới Trình chỉnh sửa chính sách nhóm cục bộ , bạn có thể chạy gpedit.msc từ Run.
ROMANIA_engineer 18/03/2016


0

Nhận xét của Stefan S 'về chế độ tài liệu so với chế độ trình duyệt rất phù hợp với vấn đề của tôi.

Tôi có dữ liệu meta X-UA-Content trong trang, nhưng tôi đã kiểm tra phiên bản trình duyệt phía khách hàng navigator.appVersion. Thử nghiệm này không phản ánh dữ liệu meta vì nó cho chế độ trình duyệt không phải là chế độ tài liệu.

Câu trả lời cho tôi là kiểm tra những document.documentModethứ như:

function IsIE(n)
{
    if (navigator.appVersion.indexOf("MSIE ") == -1) return false;
    var sDocMode = document.documentMode;
    return (isFinite(sDocMode) && sDocMode==n);
}

Bây giờ, thẻ meta X-UA-Content của tôi phản ánh trong bài kiểm tra trình duyệt của tôi.

Tại sao tôi lại làm một việc khó chịu như thử nghiệm trình duyệt? Tốc độ. Nhiều tiện ích jQuery khác của tôi, như trình sắp xếp bảng quá chậm trên IE6 / 7 và tôi muốn tắt chúng đi. Tôi không chắc chắn rằng việc kiểm tra các tính năng của trình duyệt có thể giúp tôi giải quyết vấn đề này.

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.