2015-03-02 23 views
6

Tôi không hiểu cách giải quyết vấn đề này bằng Javascript hoặc HTML. Tôi có khách hàng hiện đang sử dụng các ứng dụng web được xây dựng cho ie9 và dưới. Các ứng dụng cũ này không hoạt động tốt trên IE11. Giải pháp CNTT là để cho phép chế độ doanh nghiệp. Chế độ doanh nghiệp được thiết kế để tránh "các vấn đề tương thích phổ biến liên quan đến các ứng dụng web được viết và thử nghiệm trên các phiên bản cũ của Internet Explorer".IE 11 - Có cách nào để kiểm tra rồi bật/tắt chế độ doanh nghiệp không?

Xem: http://www.eightforums.com/tutorials/43972-ie11-enterprise-mode-enable-disable-users.html

Cho phép các doanh nghiệp chế độ dường như có vấn đề về ứng dụng web viết bằng Bootstrap và AngularJS. Tức là, đáp ứng không hoạt động chút nào trừ khi chế độ doanh nghiệp bị vô hiệu hóa. Không chỉ AngularJS và Bootstrap mà còn cả các thư viện khác nữa.

Giải pháp mà tôi đang tìm kiếm là cách kiểm tra trạng thái của chế độ doanh nghiệp qua javascript, sau đó yêu cầu người dùng bật/tắt chế độ. Tốt hơn, nếu nó có thể được tắt/bật tự động thông qua các thuộc tính JS hoặc HTML.

Snooping trong đối tượng document.x và window.x, tôi không thấy bất kỳ thuộc tính nào mà chúng tôi sẽ cung cấp cho tôi chỉ báo rằng chế độ doanh nghiệp được bật. Bất kì lời đề nghị nào?

Repro (s):

  • IE11> Công cụ cho nhà phát triển> Console> Gõ cửa sổ
  • IE11> Công cụ cho nhà phát triển> Console> Loại tài liệu
+0

Nếu Chế độ doanh nghiệp giống với Chế độ tương thích, bạn có thể kiểm tra 'document.documentMode' dựa trên số phiên bản cụ thể. – user1620220

+0

Nghe có vẻ như tôi đang tìm kiếm thẻ meta [Tương thích X-UA] (https://www.modern.ie/en-us/performance/how-to-use-x-ua-compatible) . Việc đặt nó không yêu cầu hành động nào ở đầu của người dùng và cho phép trang của bạn chỉ định chế độ tài liệu cần được hiển thị, bất kể trình duyệt mặc định là gì. – Waxen

+1

@Waxen Tôi nghĩ rằng cài đặt trình duyệt IE có thể ghi đè thẻ đó. – user1620220

Trả lời

5

Không có tài sản DOM chỉ ra rằng bạn đang chạy EMIE. Toàn bộ ý tưởng về EMIE là emulate IE8 behavior tốt hơn chế độ tài liệu IE8 mô phỏng hành vi của IE8. EMIE chỉ nên được sử dụng trong những trường hợp cụ thể khi cần thiết; nó không nên được sử dụng bán buôn.

Có thể phát hiện EMIE trong một số trường hợp nhất định. Nếu bạn xem xét kỹ danh sách user-agent strings trong vài phiên bản gần đây nhất, có sự khác biệt đáng chú ý giữa EMIE trên IE11 và chuỗi tác nhân người dùng cho IE11 RTM.

Tuy nhiên, trước khi bạn đi mà như viên đạn ma thuật của bạn, có hai hãy cẩn thận:

  1. Bạn không thể vô hiệu hóa EMIE lập trình. Đó chỉ là local configuration change.

  2. Tác nhân người dùng cho IE11 hoàn toàn khác với ngày hôm nay khi IE11 được phát hành. Dựa trên báo cáo từ nhóm IE, chuỗi UA sẽ là thậm chí more complicated, đặc biệt là khi "IE Spartan" (hoặc bất cứ điều gì họ chọn để gọi nó là ") chạm dây.

Khuyến cáo của tôi? Tạo trang trình khởi chạy nhỏ có chức năng phát hiện tính năng đơn giản cho ứng dụng web được đề cập. Nếu bạn phát hiện các tính năng phù hợp với những gì cần thiết cho ứng dụng thì hãy hiển thị liên kết để khởi chạy ứng dụng. bạn đã nhắm mục tiêu, hiển thị cảnh báo với một liên kết đến thông tin khắc phục sự cố. Hãy chắc chắn bao gồm một liên kết ra mắt dù sao, chỉ trong trường hợp.

bằng cách này, người dùng có thông tin mà họ cần và bạn có một li cách xử lý vấn đề ghtweight, một vấn đề không yêu cầu quá nhiều cập nhật đối với ứng dụng được đề cập.

Hy vọng điều này sẽ giúp ...

- Lance

+0

Cảm ơn bạn đã đề xuất. Bạn chỉ vào con đường bên phải. –

+0

Tôi có một ứng dụng con bên trong ứng dụng chính của tôi mở ra trong một cửa sổ bật lên. Bằng cách nào đó ứng dụng con của tôi mở ra ở chế độ doanh nghiệp và tôi gặp vấn đề về giao diện người dùng. Bất kỳ ý tưởng/đề xuất lý do tại sao nó được mở trong chế độ doanh nghiệp? – Saumyaraj

1

Đối với những người cũng gặp khó khăn với vấn đề này. Tôi đã gửi yêu cầu tính năng cho Nhóm MS IE.

Xem: https://connect.microsoft.com/IE/feedback/details/1159543/need-a-way-for-client-side-codes-to-detect-enterprises-mode

Giải pháp của tôi là một workaround mà liên quan đến việc kiểm tra độ rộng của div container. Chế độ doanh nghiệp không hỗ trợ phản hồi.

+0

Mọi thứ phát hiện Chế độ doanh nghiệp cũng sẽ phát hiện phiên bản IE đang được Chế độ doanh nghiệp sử dụng - ví dụ: bạn không thể phân biệt giữa IE 8 và EM IE 8. Đó là toàn bộ điểm của Chế độ Doanh nghiệp. – NetMage

+0

Đây là vấn đề người dùng có liên quan: https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/11265198-need-a-way-to-detect-enterprise-mode-from -client-s – travis

2

Vì lý do của vấn đề là chế độ IE 11 Enterprise mô phỏng IE 8. Tuy nhiên, bootstrap không hỗ trợ IE 8. Để khắc phục nó, chỉ cần sử dụng HTML5 shim và Respond.js như mô tả here.

<script src="js/respond.min.js"></script> 
<script src="js/html5shiv.min.js"></script> 

Nhưng mà không séc như <!--[if lt IE 9]> - vì có vẻ như nó không hoạt động ở chế độ doanh nghiệp.

Các giải pháp tốt hơn sẽ không chỉ bao gồm các kịch bản đề cập mà không cần điều kiện nhưng tìm hiểu điều kiện thích hợp thay vì < IE 9.

Để khắc phục vấn đề với angularjs chỉ cần sử dụng thẻ meta sau:

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

Hoặc sử dụng Modernizr để điều kiện tải response.min.js và html5shiv.min.js –

+0

Hoặc chỉ đặt Enterprise Mode thành IE 9 hoặc IE 10 thay vì IE 8. Hoặc viết lại trang web của bạn để làm việc với IE 11 . – NetMage

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