首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaScript:如果它在IE7或IE8兼容模式下,我可以检测IE9吗?

JavaScript:如果它在IE7或IE8兼容模式下,我可以检测IE9吗?
EN

Stack Overflow用户
提问于 2018-03-01 04:56:03
回答 2查看 0关注 0票数 0

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

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

我假设文档模式不会帮助,因为我的脚本加载到的页面可能会强迫怪异或强制进行特定设置。

我希望IE9将拥有一些存在并可测试的属性,无论它是处于7,8或9模式。

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

如果我以IE9或IE9兼容的方式离开浏览器模式,并且尝试使用文档模式下拉变体,那么我确实会在所有8种组合(两种浏览器模式和4种文档模式)中显示“Trident / 5.0”。我只需要避开选择浏览器模式的IE7和IE8,因为他们确实是(模拟的)IE7和IE8。

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

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

别担心,这不适用于样式,格式,逻辑或页面内容。我使用特征检测来处理这些事情。我只需要检测IE9(不管它处于什么模式)并对此做出非页面内容决定。

EN

回答 2

Stack Overflow用户

发布于 2018-03-01 13:43:08

实际上,在IE7兼容模式下运行时,IE9的用户代理字符串不同,因此这将是区分不同IE版本的最佳方式之一。

介绍IE9的用户代理字符串

与IE8类似,IE9的兼容性视图将映射到IE7标准模式,并且在兼容性视图中IE9的UA字符串将为: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/5.0) 在兼容性视图中,IE9通过应用程序版本号(Mozilla / 4.0)和版本令牌(MSIE 7.0)将自身报告为IE7。这是为了兼容性而完成的。从“Trident / 4.0”到“Trident / 5.0”,递增的Trident令牌可以让网站区分在Compat View中运行的IE9和在Compat View中运行的IE8

(强调加我)。因此,用户代理字符串与报告自己是“Mozilla / 4.0”和MSIE 7.0相同,但IE9将始终是Trident / 5.0 - 无论它是否显示MSIE 7.0,MSIE 8.0或MSIE 9.0

票数 0
EN

Stack Overflow用户

发布于 2018-03-01 14:54:29

document.documentMode是文档模式的最佳方式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档