我需要知道通过用户代理字符串标识为IE7或IE8的浏览器是否真的是那些浏览器,或者它是7或8兼容模式下的IE9。
从用户代理字符串中可以看到,处于IE7兼容模式的IE9提供了与真实IE7相同的字符串。我是否可以测试一个额外的属性/元素/对象,以查看它是否真的是“真正的” IE9?
我认为文档模式将无济于事,因为脚本加载到的页面可能是强制古怪或强制进行了特定设置。
我希望IE9可以具有一些存在的属性,并且无论它处于7、8还是9模式都可以测试。
编辑添加...
好的,我知道我现在要去哪里了。我在使用“浏览器模式”下拉列表并将其切换到IE8和IE7,并认为这分别是“ IE8兼容模式”和“ IE7兼容模式”。这当然是不正确的。开发人员工具的“浏览器”模式实际上是将其切换为“类似于”那些旧的浏览器,因此,报告原始用户代理字符串是正确的。
如果我将浏览器模式保留为IE9或IE9兼容性,而尝试使用文档模式下拉变体,则实际上我确实在所有8种组合(两种浏览器模式和4种文档模式)中都出现了“ Trident / 5.0”。我只需要避免选择浏览器模式IE7和IE8,因为它们实际上是(模拟的)IE7和IE8。
因此,页面,非开发人员用户,元标记或Microsoft的兼容性列表将无法使IE9处于这种无法识别的状态。
只需使用if(navigator.userAgent.indexOf("Trident/5")>-1)
就足够了。
不用担心,这不适用于样式,格式,逻辑或页面内容。我对那些东西使用特征检测。我只需要检测IE9(无论它处于哪种模式),然后就此做出非页面内容决定即可。
感谢您引导我提出您的建议和链接,以解答您的问题。