javascript - 我可以使用 HttpBrowserCapability 对象在服务器端检测 IE 文档模式吗

标签 javascript rendering httpbrowsercapabilities

我可以使用 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

User-Agent Properties

编辑 我想我会添加更多细节。基本上,用户代理字符串的 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/

相关文章:

javascript - 收到错误 "Expected false to be true"

c# - 如何在 C# 中获取 HTMLAgilityPack DOM 元素的边界框?

c# - 如何将 WPF 窗口渲染到 DirectX 缓冲区中?

javascript - Protractor Jasmine 规范描述中的浏览器功能

c# - HttpBrowserCapabilities缺少一些信息?

Javascript将字符串与模式匹配并在匹配的字符串中插入一些文本

javascript - jQuery 建议 : How can I improve this function for scrolling elements into view?

javascript - 使用 Enzyme 测试点击监听器

java - 卡在 Java Swing 项目 : Conway's Game of Life

google-chrome - TestCafe 中的浏览器功能