Internet Explorer 11 vô hiệu hóa "hiển thị các trang web mạng nội bộ trong chế độ xem tương thích" thông qua thẻ meta không hoạt động


100

Tôi đã làm việc trên một trang web mạng nội bộ trong hơn 6 tháng và tôi đã sử dụng doctypethẻ meta html5 và tương thích cạnh bên dưới để buộc Internet Explorer không mô phỏng phiên bản trình duyệt cũ hơn và điều này đã hoạt động tốt.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>My title</title>
    <meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
</head>
<body>
</body>
</html>

Lý do tôi làm theo cách này là vì nơi tôi làm việc sử dụng cài đặt chính sách để kích hoạt chế độ xem tương thích cho tất cả các trang mạng nội bộ và cách tiếp cận sử dụng EDGEcài đặt này đã hoạt động trong Internet Explorer 9.

Cài đặt chế độ xem tương thích trang web nội bộ

Hơn một tháng trước, tôi đã được nâng cấp lên Internet Explorer 11 và trang web vẫn hoạt động như mong đợi.

Hôm nay điều này đã ngừng hoạt động như mong đợi, tôi không thể nói chắc chắn nhưng tôi nghĩ rằng chính sách buộc chế độ xem tương thích không được bật trong IE11 và bây giờ thì ... và vì điều này đã được bật nên thẻ meta tương thích không còn nữa đang làm những gì được mong đợi và trang web này đang được chạy ở chế độ Enterprise mô phỏng IE8.

Có ai biết cách khắc phục điều này và buộc IE11 được sử dụng trên một trang mạng nội bộ khi khả năng tương thích "Chế độ doanh nghiệp" đang được thực thi không? và không thể tắt thông qua cài đặt trình duyệt?

BIÊN TẬP

Tôi vừa thử thêm tiêu đề tùy chỉnh trong web.config của mình như được giải thích trong câu trả lời này https://stackoverflow.com/a/18257208/98706

và điều này không hiệu quả với tôi Tôi vẫn nhận được thông báo dưới đây trong bảng điều khiển thanh công cụ dành cho nhà phát triển của

HTML1122: Internet Explorer is running in Enterprise Mode emulating IE8.

Có vẻ như phiên bản 8 đang được coi là edgekhi cài đặt tương thích mạng nội bộ này được bật trong IE11.

Bài đăng này: https://www.leapinggorilla.com/Blog/Read/1016/ie-ate-my-css---disabling-compatability-mode giải thích rõ điều này, tôi chưa thử đặt tiêu đề này qua mã và người dùng của chúng tôi không có quyền truy cập để thay đổi cài đặt trình duyệt của họ .. chưa có thay đổi nào khác hoạt động.

CẬP NHẬT

Vui lòng xem nhận xét của tôi về bài đăng này về sự khác biệt giữa chế độ Doanh nghiệp và chế độ tương thích là gì, vì nó rất quan trọng.


Chế độ doanh nghiệp khác với chế độ xem khả năng tương thích, vui lòng xem stackoverflow.com/a/26463309/98706 để biết cách tắt nó nhưng trong trường hợp của tôi, nó không đơn giản như có thể tắt nó, tôi muốn ghi đè nó cho các trang web mạng nội bộ cụ thể sử dụng thẻ meta nhưng điều này không hoạt động, tôi đã không thử lại kể từ đó vì các trang web của chúng tôi hiện nằm trong danh sách trắng.
đắt

Câu trả lời:


93

Bảo đảm:

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

<meta>thẻ đầu tiên trên trang của bạn, nếu không IE có thể không tôn trọng nó.

Ngoài ra, vấn đề có thể là IE đang sử dụng Chế độ Doanh nghiệp cho trang web này:

  • Câu hỏi của bạn đề cập rằng bảng điều khiển hiển thị: HTML1122: Internet Explorer is running in Enterprise Mode emulating IE8.
  • Nếu vậy, bạn có thể cần phải tắt chế độ doanh nghiệp (hoặc như thế này ) hoặc tắt nó cho trang web đó từ menu Công cụ trong IE.
  • Tuy nhiên, về lý thuyết, Chế độ Doanh nghiệp nên được ghi đè bởi thẻ Tương thích X-UA, nhưng IE có thể có lỗi ...

Có, tôi đã làm điều này từ đó, tiếc là nó đã không làm việc :(
đắt tiền

Nó có thể là doanh nghiệp Mode là trên cho trang web đó (dựa trên câu hỏi của bạn) ... Tôi đã cập nhật câu trả lời của tôi, cho tôi biết nếu điều đó giúp
sparrowt

2
"Chế độ Doanh nghiệp" và "Chế độ xem tương thích" khác nhau, mặc dù tương tự nhau. Ngay cả khi "Hiển thị các trang web mạng nội bộ trong Chế độ xem tương thích", thẻ Tương thích X-UA sẽ ghi đè thẻ này. Tuy nhiên Chế độ doanh nghiệp có thể ghi đè điều đó ... bạn có thấy biểu tượng chế độ doanh nghiệp ( media.askvg.com/articles/images5/… ) khi ở trên trang web của mình không?
sparrowt

1
Ngoài ra, nó nói gì nếu bạn nhấn F12 và nhìn trên tab mô phỏng? Nó sẽ cho bạn biết lý do tại sao nó sử dụng chế độ tài liệu. Tôi nghĩ rằng bạn đang nhấn vào chế độ Doanh nghiệp, không phải chế độ xem tương thích.
sparrowt

19
Thật là quá! @ # $ Thật khó chịu, lãng phí hàng trăm nghìn giờ của các nhà phát triển web trên khắp thế giới.
Sam Watkins

19

Sự cố này thường do trang web / URL mạng nội bộ được đặt ở một trong các:

  • Danh sách chế độ tương thích
  • Vùng Intranet của Internet Explorer
    (đã bật Hiển thị các trang web mạng nội bộ trong cài đặt Chế độ xem tương thích )
  • Danh sách Chế độ Doanh nghiệp

Trên các mạng công ty, các cài đặt chế độ xem tương thích này thường được kiểm soát tập trung thông qua chính sách nhóm . Trong trường hợp của bạn, Chế độ doanh nghiệp dường như là thủ phạm.

Chế độ Doanh nghiệp IE 11

Rất tiếc, thiết lập META X-UA-Compatible sẽ không ghi đè điều này.

Dành cho người dùng cuối

Đôi khi cách duy nhất cho người dùng cuối cùng để ghi đè lên đây là để bấm F12 và thay đổi chế độ tài liệu dưới sự thi đua Tab. Tuy nhiên, cài đặt này không phải là vĩnh viễn và có thể hoàn nguyên sau khi Công cụ dành cho nhà phát triển bị đóng.

Bạn cũng có thể cố gắng loại trừ trang web của mình khỏi vùng Intranet. Nhưng danh sách các miền thuộc vùng Intranet thường cũng được kiểm soát bởi chính sách nhóm, do đó, cơ hội hoạt động của điều này là rất nhỏ.

Để xem danh sách các miền thuộc vùng Intranet, hãy truy cập:

Công cụ -> Tùy chọn Internet -> Bảo mật -> Trang web -> Nâng cao

Nếu danh sách chứa miền phụ của bạn và chuyển sang màu xám, thì bạn sẽ không thể ghi đè chế độ xem tương thích cho đến khi quản trị viên mạng của bạn cho phép.

Bạn thực sự cần liên hệ với quản trị viên mạng của mình để cho phép thay đổi cài đặt chế độ xem tương thích trong chính sách nhóm.

Dành cho quản trị viên mạng

Việc tải trang web khi mở Công cụ dành cho nhà phát triển (F12) thường sẽ báo cáo lý do mà IE đang chuyển sang chế độ cũ hơn.

Tất cả 3 cài đặt được đề cập ở trên thường được kiểm soát thông qua Chính sách Nhóm, mặc dù đôi khi có thể bị ghi đè trên máy người dùng.

Nếu Chế độ doanh nghiệp là vấn đề (như trường hợp của người đăng ban đầu), hai bài viết sau có thể hữu ích:


Tôi đã mở rộng câu trả lời tuyệt vời của bạn với một số chi tiết khác mà tôi đã phát hiện ra trong quá trình nghiên cứu gần đây. Tôi hy vọng điều đó ổn.
Simon East

8

Đối với những người đang xây dựng dự án ASP.NET MVC, hãy đảm bảo rằng bạn thêm:

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

vào trang Bố cục (mẫu) của bạn. Tôi chỉ dành hai giờ để gỡ lỗi và chỉnh sửa, chỉ để nhận ra rằng tôi chỉ thêm thẻ meta đó vào các trang con của mình. Ngay sau khi tôi thêm nó vào trang bố cục của mình, trình duyệt đã tải ở chế độ EDGE một cách hoàn hảo.


Vấn đề của tôi là do chế độ Doanh nghiệp mới trong IE11 buộc trình duyệt phải mô phỏng IE8. Nó không giống như chế độ tương thích, đó là những gì thẻ meta này được sử dụng để ghi đè. Tôi đã sử dụng điều này một cách chính xác.
đắt

Nhận xét của tôi nhằm hỗ trợ những người khác có cùng triệu chứng, những người đang xây dựng các trang web trong ASP.NET MVC. Tôi không nói riêng với bạn.
Jason Marsell

Thẻ meta sẽ làm việc (đối với các vấn đề chế độ tương thích, không phải doanh nghiệp các vấn đề mode) cho người không .NET / trang web MVC quá btw, nó không phải là đặc trưng cho ASP.NET
Dan Harris

4

Câu trả lời được đánh dấu là câu đúng. Tuy nhiên, Pricey, bạn nên theo dõi vấn đề này với các nhóm quản trị viên quảng cáo và máy tính để bàn của mình. Họ đang sử dụng sai danh sách trang IE11 Enterprise Mode. Microsoft KHÔNG có ý định sử dụng nó cho tất cả các trang mạng nội bộ trong một tổ chức. Điều đó sẽ tuyên truyền cài đặt "hiển thị tất cả các trang web mạng nội bộ ở chế độ tương thích" hiện có, vốn là hạn chế của sự phát triển trang web công ty trên toàn thế giới.

Nó có nghĩa là được triển khai dưới dạng "Danh sách đen", với một số trang web thực sự yêu cầu chế độ trình duyệt kế thừa được liệt kê trong danh sách Chế độ doanh nghiệp với các yêu cầu hiển thị được chỉ định. Tất cả các trang web khác trong tổ chức của bạn sau đó được giải phóng để sử dụng Edge. Những người trong tổ chức của bạn đã triển khai nó với tất cả các trang web mạng nội bộ được bao gồm từ đầu đã hoàn toàn hiểu sai về cách triển khai Chế độ doanh nghiệp.


Vâng, họ chắc chắn nên làm điều đó, nhưng tôi tiếc là không có bất kỳ tiếng nói nào trong vấn đề này, nhưng nó đã được nêu ra với họ.
đắt

1

Câu hỏi hơi cũ nhưng tôi vừa giải quyết một vấn đề rất tương tự. Chúng tôi có một số trang web mạng nội bộ ở đây, bao gồm trang mà tôi chịu trách nhiệm và những trang khác yêu cầu chế độ tương thích hoặc chúng bị hỏng. Vì lý do đó, quy tắc trang mặc định IE ở chế độ tương thích trên các trang mạng nội bộ. Tôi đang nâng cấp công cụ của riêng mình và không cần nó nữa; trên thực tế, một số tính năng tôi đang cố gắng sử dụng trông không phù hợp ở chế độ so sánh. Tôi đang sử dụng thẻ meta IE-Edge giống như bạn.

IE cho rằng các trang web không có địa chỉ đủ điều kiện là mạng nội bộ và sẽ hành động theo đó. Với ý nghĩ đó, tôi chỉ thay đổi các ràng buộc trong IIS để chỉ lắng nghe địa chỉ đủ điều kiện, sau đó thiết lập một trang web giả có lắng nghe địa chỉ không đủ tiêu chuẩn. Địa chỉ thứ hai chuyển hướng tất cả lưu lượng truy cập đến địa chỉ đủ điều kiện, khiến IE tin rằng đó là một trang bên ngoài. Trang web hiển thị chính xác khi có hoặc không chọn hộp Chế độ tương thích trên Intranet Sites.


xem: stackoverflow.com/questions/2518256/… nếu bạn có quyền truy cập web.config.
fontophilic

Tôi đã thấy câu hỏi đó trước đó nhưng tôi đoán tôi đã nhầm dòng tiêu đề HTTP với dòng META và nghĩ rằng tôi đã thử nó. Nó hoạt động tốt khi tôi đã giải quyết vấn đề đó. Cảm ơn vì đã chỉ lại cho tôi.
Mike Anderson

Tôi đã thử áp dụng cài đặt EDGE tương thích tương tự vào cấu hình web và nó không hoạt động với tôi, cách duy nhất tôi tìm thấy để làm cho điều này hoạt động là yêu cầu các trang web cụ thể của chúng tôi được thêm vào danh sách trắng để chúng bị bỏ qua khỏi trang mới Chế độ IE11 Enterprise, có vẻ là một cái gì đó khác với chế độ tương thích. Đây không phải là một giải pháp tốt đối với tôi vì tôi luôn phải vượt qua các vòng lặp để hoàn thành nó.
đắt

Có vẻ như bạn đã đi cùng một con đường như tôi đã làm. Có 2 điều tôi phải làm. 1 là cài đặt EDGE trong thẻ META của trang. Bạn có thể làm điều này trong web.config (hoặc không, tôi không biết) nhưng tôi đã làm điều đó trên trang chủ của trang web. Cách khác đã thêm tiêu đề HTTP tùy chỉnh vào web.config.
Mike Anderson

1

Đây là một vấn đề cũ với một số thông tin tốt. Nhưng những gì tôi vừa tìm thấy là sử dụng FQDN sẽ tắt chế độ Compat trong IE 9 - 11. Ví dụ. Tôi gặp sự cố máy tính với
http: // lrmstst01: 8080 / JavaWeb / login.do
nhưng sự cố đã biến mất với
http://lrmstst01.mydomain.int:8080/JavaWeb/login.do
NB: .int là một phần của miền nội bộ của chúng tôi


Các liên kết đó không hợp lệ. Chúng được sử dụng làm ví dụ về url chỉ có tên máy tính so với url có FQDN.
Dean P

2
Mẹo chuyên nghiệp: Example.com tồn tại chỉ cho mục đích này
Cơ bản

Đây vẫn là một vấn đề và bình luận này không bổ sung gì cho giải pháp.
Diana

0

Di chuyển nó đến vùng Trang web đáng tin cậy bằng cách thêm nó vào danh sách Trang web đáng tin cậy hoặc cài đặt cục bộ. Thao tác này sẽ di chuyển nó ra khỏi Intranet Zone và sẽ không được hiển thị trong Compat. Lượt xem.


Ps Tôi biết điều này hoạt động vì đó là những gì chúng tôi đang làm tại công ty của tôi cho các sản phẩm dựa trên trình duyệt mới hơn không được viết bằng thẻ X-UA để thực thi hiển thị theo cách họ muốn.
Greg C.

Vì điều này có thể là một thiết lập rộng rãi của công ty, câu trả lời của bạn sẽ phải được áp dụng cho mọi máy của người dùng, điều này khó lý tưởng.
MattD

0

Thêm thuộc tính dưới đây vào tệp web.config cho các trang IIS. Điều này đã làm việc cho tôi trên mạng nội bộ của tôi trong IE11.

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

Xin vui lòng xem cập nhật của tôi trên vé, chế độ Enterprise và chế độ Compatibility là 2 thứ khác nhau
đắt tiền

0

Tôi đã giải quyết vấn đề này bằng cách chuyển hướng người dùng đến FQDN của máy chủ lưu trữ mạng nội bộ.

IE có lẽ sử dụng thuật toán tồi tệ nhất thế giới để phát hiện các trang web "mạng nội bộ" ... thực sự, việc chỉ định server.domain.tld giải quyết được vấn đề cho tôi.

Vâng, bạn đã đọc chính xác, IE phát hiện các trang web mạng nội bộ không phải bằng địa chỉ IP riêng, giống như bất kỳ nhà phát triển nào đã nghe nói về TCP / IP sẽ làm, không, bởi phần "máy chủ" của URL, nếu nó không có phần miền, phải được nội bộ.

Thật đáng sợ khi biết các nhà phát triển IE không hiểu các khái niệm TCP / IP cơ bản nhất.

Lưu ý rằng điều này xảy ra với một khách hàng doanh nghiệp LỚN, việc yêu cầu họ đổi GPO cho bạn giống như cố gắng di chuyển dãy Alps về phía đông thêm 4 mét, sẽ không xảy ra.


IE có thể thực hiện tra cứu DNS và biết IP từ đó. Vì nó là MS, nó có thể làm AD, nhưng DNS có ý nghĩa hơn.
Smoore 4

@SQLDBA phủ định, nếu bạn chỉ định IP, giả sử 10.0.0.1, máy chủ KHÔNG được phát hiện là trang web "mạng nội bộ" ... không liên quan gì đến DNS, ý bạn là gì với AD? Ý bạn là nó kết nối với AD và tra cứu máy chủ ở đó? Không có ý nghĩa gì, tại sao nó sẽ làm như vậy? Sau đó, một lần nữa, họ là Microsoft vì một lý do.
thecarpy

0

Đối với những gì nó đáng giá, tôi cũng gặp sự cố trong IE11:

  • Tôi không ở chế độ Doanh nghiệp.
  • "Hiển thị các trang web mạng nội bộ trong Chế độ xem tương thích" đã được chọn.
  • Tôi đã có tất cả các cài đặt <!DOCTYPE html>IE=Edgecài đặt được đề cập trong câu hỏi
  • Tiêu đề meta thực sự là phần tử đầu tiên trong <head>phần tử

Sau một thời gian, tôi phát hiện ra rằng:

  • tiêu đề Tác nhân Người dùng được gửi đến máy chủ là IE7 nhưng ...
  • giá trị JavaScript là IE11!

Tiêu đề HTTP :

User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E) nhưng

JavaScript :

window.navigator.userAgent === 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko'

Vì vậy, tôi đã kết thúc việc kiểm tra ở phía khách hàng.

Và BTW, trong khi đó, việc kiểm tra tác nhân người dùng không còn được khuyến khích nữa. Xem https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent (nhưng có thể có một trường hợp tốt)

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.