我可以使用 HttpBrowserCapativity 对象找出浏览器版本和特定功能,但是有没有办法找到浏览器用于呈现的文档模式?
相当于 JavaScript 属性 document.documentMode
可以通过 developer tools 更改模式
更新
我希望在我的 Razor 布局页面中使用类似的内容包含一个适用于 IE7 及以下版本的单独样式表...
@if (ViewContext.IsBrowserOlderThanIE8()) {
<link href="Ie7.css" rel="stylesheet" type="text/css" />
}
在函数 IsBrowserOlderThanIE8
中,我可以检测浏览器版本,但这不足以了解客户端正在使用的文档模式。文档模式对实际使用的渲染引擎有更多的限制。
最佳答案
您应该能够使用 Request.UserAgent
获取其中包含功能标志的字符串。
检查这 2 个链接。
Understanding User-Agent strings
编辑 我想我会添加更多细节。基本上,用户代理字符串的 Trident token 是浏览器的真实版本,MSIE token 是它正在使用的浏览器模式。您可以使用第一个链接并运行 fiddler 来轻松查看 HTTP header 的样子。
更多编辑
我打开 fiddler 并使用 IE9.0 浏览 www.yahoo.com 并看到 User-Agent: Mozilla/5.0 (兼容; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
然后我点击兼容模式按钮并看到:
User-Agent: 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; .NET4.0C; .NET4.0E; Zune 4.7)
看看 trident 两次都是 = 5.0,但 MSIE 是 9.0,然后是 7.0?
根据您要访问的 URL,有多种方法可以强制提供此信息。例如,在我现在正在工作的网络应用程序中,由于各种原因,我们强制使用 IE7 兼容模式。
关于javascript - 我可以使用 HttpBrowserCapability 对象在服务器端检测 IE 文档模式吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9430449/