相关疑难解决方法(0)

JavaScript:我可以检测IE9是否在IE7或IE8兼容模式下?

我需要知道通过用户代理字符串识别自己的IE7或IE8的浏览器是否真的是那些浏览器,或者它是否是7或8兼容模式下的IE9.

从我在用户代理字符串中看到的,IE7兼容模式下的IE9,为真正的IE7提供了相同的字符串.是否有一个额外的属性/元素/对象,我可以测试它是否真的"伪装"IE9?

我假设文档模式无效,因为我的脚本加载到的页面可能是强制怪癖或强制特定设置.

我希望IE9具有一些存在的属性,无论是在7,8或9模式下都可以测试.


编辑添加...

好的,我现在看到我哪里出错了.我正在使用"浏览器模式"下拉菜单并将其切换到IE8和IE7,并认为这分别是"IE8兼容模式"和"IE7兼容模式".这当然不是真的.开发人员工具的浏览器模式确实将其切换为"就像"那些旧的浏览器,因此报告原始的useragent字符串是正确的.

如果我留在IE9或兼容IE9浏览器模式,并尝试将文档模式下拉变种来代替的话,我其实做得到"三叉戟/ 5.0"存在于所有8种组合(双浏览器模式和4种文档模式).我只需要避免选择浏览器模式IE7和IE8,因为它们确实是(模拟)IE7和IE8.

因此,页面,非开发人员用户,元标记或Microsoft的兼容性列表都无法将IE9置于这种无法识别的状态.

只需使用if(navigator.userAgent.indexOf("Trident/5")>-1)就足够了.

别担心,这不适用于样式,格式,逻辑或页面内容.我对这些东西使用特征检测.我只需要检测IE9(无论它处于什么模式)并做出非页面内容决定.

感谢您通过您的建议和链接指导我的答案.

javascript ie8-compatibility-mode internet-explorer-9

87
推荐指数
5
解决办法
9万
查看次数