我不知道如何用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):
答案 0 :(得分:5)
没有DOM属性表明您正在运行EMIE。 EMIE的整个想法是emulate IE8 behavior比IE8文档模式更好地模拟IE8行为。 EMIE应仅用于需要它的特定情况;它不应该批发使用。
在某些情况下可以检测EMIE。如果仔细查看过去几个版本中的user-agent strings列表,IE11上的EMIE与IE11 RTM的用户代理字符串之间会有明显的区别。
然而,在你把它作为你的魔术子弹之前,有两点需要注意:
您无法以编程方式禁用EMIE。它只是local configuration change。
今天IE11的用户代理与IE11发布时完全不同。根据IE团队的报告,UA字符串将是more complicated,尤其是一次" IE Spartan" (或者他们选择称之为#34;)击中电线。
我的推荐?创建一个小型启动器页面,为相关的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团队提交了一项功能请求。
我的解决方案是一种解决方法,涉及检查容器div的宽度。企业模式不支持响应。