IE 11 - 有没有办法检查然后启用/禁用企业模式?

时间:2015-03-02 20:18:24

标签: internet-explorer-11

我不知道如何用Javascript或HTML解决这个问题。我的客户目前正在使用为ie9及以下版本构建的Web应用程序。这些遗留应用程序在IE11上运行不佳。 IT解决方案是为了实现企业模式。企业模式旨在避免“与在旧版Internet Explorer上编写和测试的Web应用程序相关的常见兼容性问题”。

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

在使用Bootstrap和AngularJS编写的Web应用程序中,启用企业模式似乎存在问题。即,除非企业模式被禁用,否则响应不起作用。不仅仅是AngularJS和Bootstrap,还有其他库。

我正在寻找的解决方案是通过javascript检查企业模式状态的方法,然后告诉用户启用/禁用该模式。更好,如果它可以通过JS或HTML属性自动关闭/打开。

在document.x和window.x对象中窥探,我没有看到任何属性,我们会告诉我企业模式是否启用。有什么建议吗?

摄制(S):

  • IE11>开发人员工具>控制台>输入窗口
  • IE11>开发人员工具>控制台>输入文件

3 个答案:

答案 0 :(得分:5)

没有DOM属性表明您正在运行EMIE。 EMIE的整个想法是emulate IE8 behavior比IE8文档模式更好地模拟IE8行为。 EMIE应仅用于需要它的特定情况;它不应该批发使用。

在某些情况下可以检测EMIE。如果仔细查看过去几个版本中的user-agent strings列表,IE11上的EMIE与IE11 RTM的用户代理字符串之间会有明显的区别。

然而,在你把它作为你的魔术子弹之前,有两点需要注意:

  1. 您无法以编程方式禁用EMIE。它只是local configuration change

  2. 今天IE11的用户代理与IE11发布时完全不同。根据IE团队的报告,UA字符串将是more complicated,尤其是一次" IE Spartan" (或者他们选择称之为#34;)击中电线。

  3. 我的推荐?创建一个小型启动器页面,为相关的Web应用程序执行简单的功能检测。如果您检测到与应用所需内容一致的功能,则会显示启动应用的链接。如果功能检测无法检测到IE8,IE11或您所定位的任何版本,则会显示警告,其中包含指向更多故障排除信息的链接。不管怎样,请务必包含启动链接,以防万一。

    通过这种方式,用户可以获得所需的信息,并且您可以轻松地处理问题,并且不会对相关应用程序进行太多更新。

    希望这会有所帮助......

    - Lance

答案 1 :(得分:2)

在我看来,问题的原因是IE 11企业模式模拟IE 8.但是bootstrap不支持IE 8.要克服它,只需使用HTML5 shim和Respond.js,如here所述。< / p>

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

没有检查<!--[if lt IE 9]> - ,因为它似乎无法在企业模式下运行。

更好的解决方案不仅仅是在没有条件的情况下包含所提到的脚本,而是找出适当的条件而不是&lt; IE 9。

要解决angularjs的问题,只需使用以下元标记:

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

答案 2 :(得分:1)

对于那些也在努力解决这个问题的人。我已向MS IE团队提交了一项功能请求。

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

我的解决方案是一种解决方法,涉及检查容器div的宽度。企业模式不支持响应。