javascript - Intranet 站点的 IE9 兼容模式具有错误的用户代理字符串

标签 javascript jquery internet-explorer view compatibility

我在一个大项目中工作,我们必须确定用户是否在使用 IE 中的兼容性 View 。
我正在使用这段代码来做到这一点。

var agentStr = navigator.userAgent;
var mode = null;
if (agentStr.indexOf("Trident/5.0") > -1) {
    if (agentStr.indexOf("MSIE 7.0") > -1)
        mode = "IE9CV";
    else
        mode = "IE9";
} else if (agentStr.indexOf("Trident/4.0") > -1) {
    if (agentStr.indexOf("MSIE 7.0") > -1)
        mode = "IE8CV";
    else
        mode = "IE8";
} else
    mode = "IE7";

它工作得很好,问题是:
1 - 在 INTRANET 环境中,在客户端浏览器中选中了“在兼容性 View 中显示 Intranet 站点”选项,对此我无能为力
Compatibility View

2 - 脚本检测兼容性 View 没有问题,但我不知道为什么,如果页面加载到 IE 9 兼容性 View <,我收到的用户代理是下面这个/强>

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)

非常相同如果页面加载IE9

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)

当我收到的时候

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)

针对IE9兼容性查看。
当我强制使用 IE9 兼容性 View (如预期的那样)时,我得到了最后一个结果,但是当它自行加载时,我得到的用户代理与 IE9 标准发送给我的用户代理相同。所以我想不出一种方法来确定用户是否具有 IE9 标准 View 或兼容性 View 。

我不知道我是否说清楚了,但这看起来像是一个很大的 IE 错误。
我该如何进行?有没有人也遇到过这个问题?

这是模拟情况的屏幕: Compatibility View

最佳答案

兼容模式几乎无处不在! :)

但是,尽量不要检测浏览器代理,因为它很容易被愚弄并且通常不可靠,而是尝试“功能检测”。

有一些库可以用来做这个

编辑:如果您的要求是阻止用户访问启用了兼容性 View 的网站,您可以使用 <META> tag / HTTP header.禁用该模式。有关详细信息,请参阅此处。

http://blogs.msdn.com/b/ie/archive/2008/08/27/introducing-compatibility-view.aspx

http://blogs.msdn.com/b/ie/archive/2008/06/10/introducing-ie-emulateie7.aspx

关于javascript - Intranet 站点的 IE9 兼容模式具有错误的用户代理字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13864754/

相关文章:

javascript - 我可以在 Chrome 中使用 javascript 获取剪贴板数据吗

javascript - 如何检测 Firefox Mobile 中的触摸支持(Android、Fennec 7.0.1)

javascript - jQuery UI 自动完成 : minLength in a textarea, 有没有办法在每个新行中从 0 开始计数?

javascript - 为什么 jQuery 不能处理附加内容?

html - IE 自动化 : How to click on div

javascript - 带有 JavaScript 警报/提示的 Android WebViewClient

javascript - Three.js 如何确保模型加载后加载其他 javascript 文件

javascript - 展开和折叠元素以及从 JavaScript 中删除静态文本

internet-explorer - 在同一台计算机上运行 Internet Explorer 6、Internet Explorer 7 和 Internet Explorer 8

css - IE8 忽略选择器过多的规则