Possible Duplicate:
Differentiate IE7 browser and browser in IE7 compatibility mode
我们还没有时间用我们相当广泛的系统来全面测试 IE8。我们也已经到了无法禁止使用 IE8 的地步。我们的用户很固执,也不是很老练,所以我们觉得我们不能告诉他们使用“兼容模式”按钮。相反,我们将添加“IE=EmulateIE7”元标记作为临时修复。
问题是,当使用这个标签时,浏览器仍然报告自己是IE8,然后我们的页面会检测到它并拒绝它。我可以理解为什么服务器端检测无法获取元标记(在发送和处理元标记之前服务器已经拥有用户代理),但客户端检查也失败。如果在客户端计算机上单击兼容模式按钮,则用户代理为 IE7,但如果我们使用元标记则不会。
这意味着,除其他外,我们必须禁用检查,然后,如果我们在某个地方犯了错误并且忘记将元标记添加到页面,我们就会出现损坏的页面。
还有其他人遇到过这种情况并提出更好的方法吗?当meta标签设置模式时,有没有办法检测到IE8是否运行在兼容模式下?
而且,我们确实知道有一个有效的思想流派,即我们应该使所有页面与 IE8 标准模式兼容,但在我们现实的小角落,这现在不是一个可行的选择(我将指出我们没有创建 4 个或 5 个必须以非标准方式编写的 IE 版本)。
最佳答案
IE8 在用户代理字符串中包含一个 trident token ,无论兼容模式如何。
有关更多详细信息,请参阅 MSDN:The Internet Explorer 8 User-Agent String (Updated Edition)
Windows Vista 上的 IE7
Mozilla/4.0(兼容;MSIE 7.0;Windows NT 6.0)
Windows Vista 上的 IE8(兼容性 View )
Mozilla/4.0(兼容;MSIE 7.0;Windows NT 6.0;Trident/4.0)
Windows Vista 上的 IE8
Mozilla/4.0(兼容;MSIE 8.0;Windows NT 6.0;Trident/4.0)
关于internet-explorer-8 - 检测IE8兼容模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1328963/