我需要知道通过用户代理字符串标识自己为 IE7或 IE8的浏览器是否真的是那些浏览器,或者它是7或8兼容模式下的 IE9。
从用户代理字符串中我可以看到,IE7兼容模式下的 IE9提供了与真正的 IE7相同的字符串。是否有一个额外的属性/元素/对象,我可以测试看看它是否“真的”IE9伪装?
我假设文档模式不会有帮助,因为我的脚本加载到的页面可能是强制性的怪癖或强制性的特定设置。
我希望 IE9将有一些属性,存在和可测试的,无论它是在7,8或9模式。
编辑添加..。
好吧,我知道我哪里做错了。我使用“浏览器模式”下拉菜单,将其切换到 IE8和 IE7,并认为这是“ IE8兼容模式”和“ IE7兼容模式”分别。这当然不是真的。开发工具的浏览器模式实际上正在将其转换为“类似”那些老式浏览器,因此只有报告原始用户代理字符串才是正确的。
如果我将浏览器模式设置为 IE9或 IE9兼容,并尝试使用文档模式下拉列表变体,那么事实上我将得到“ Trident/5.0”,这8种组合(两种浏览器模式和4种文档模式)。我只是需要避开选择浏览器模式 IE7和 IE8,因为他们真的是(模拟) IE7和 IE8。
因此,一个页面、一个非开发人员用户、一个元标记或微软的兼容性列表都不可能将 IE9置于这种无法识别的状态。
只要使用 if(navigator.userAgent.indexOf("Trident/5")>-1)
就足够了。
别担心,这不是针对样式、格式、逻辑或页面内容的。我用的是特征提取。我只需要检测 IE9(不管它处于什么模式) ,然后做一个非页面内容的决定。
感谢您的建议和链接引导我找到答案。