我可以使用HttpBrowserCapabilities对象在服务器端检测IE文档模式吗
Can I detect IE Document Mode on the server side using the HttpBrowserCapabilities object
我可以使用HttpBrowserCapabilities对象找到浏览器版本和特定功能,但有没有办法找到浏览器用来渲染的文档模式?
等效于JavaScript属性document.documentMode
可以通过开发工具更改模式
更新
我希望在我的剃刀布局页面中使用类似的东西,为IE7及以下版本提供一个单独的样式表。。。
@if (ViewContext.IsBrowserOlderThanIE8()) {
<link href="Ie7.css" rel="stylesheet" type="text/css" />
}
在函数IsBrowserOlderThanIE8
中,我可以检测浏览器版本,但这还不足以知道客户端使用的文档模式。文档模式对实际使用的渲染引擎有更多的影响。
您应该能够使用Request.UserAgent
来获取其中包含功能标志的字符串。
检查这2个链接。
了解用户代理字符串
用户代理属性
编辑我想我会补充更多细节。基本上,用户代理字符串的三叉戟令牌是浏览器的REAL版本,MSIE令牌是它正在使用的浏览器模式。您可以通过使用第一个链接并运行fiddler来查看HTTP标头的样子,从而轻松地检查这一点。
更多编辑我打开fiddler,用IE9.0浏览到www.yahoo.com,然后看到User-Agent: Mozilla/5.0 (compatible; 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)
看看三叉戟两次都是5.0,但MSIE是9.0,然后是7.0?
根据您要访问的URL,有一些方法可以强制提供这些信息。例如,在我现在工作的网络应用程序上,由于各种原因,我们强制使用IE7兼容模式。
否。您无法通过服务器端代码确定文档模式。你可以检查compat。用户代理中具有trident值的模式,默认为文档模式。关键词。。默认值。。它仍然可以通过F12进行更改。如果用户再次更改文档模式,则为除兼容之外的其他模式。模式将其更改为,则您将无法看到更改。
您可以在客户端确定它,然后让客户端请求正确的css文件。。。
<head>
<script type="text/javascript>"
...
var choice;
if (condition) {
choice = 'ie7';
} else {
choice = 'default';
}
document.writeln('<link type="text/css" rel="stylesheet" href="' + choice + '.css" />');
</script>
...
</head>
当然,您可以将这个小的"选择器"脚本制作成一个包含的文件,而不是在您制作的每个页面中直接编码。
- 是否可以使用Javascript检测所有版本的IE?怎样
- 使用less.js检测旧版本的ie,然后使用filter
- 如何检测IE浏览器的角度
- 使用Javascript检测IE中的高级隐私设置
- Javascript浏览器检测与IE 11
- 正在IE中检测安全警报
- 现在 $.browser 已被弃用,我如何使用 jQuery 检测 IE 8
- 如何在IE中检测弹出窗口阻止程序
- 如何在加载javascript时检测Safari,Chrome,IE,Firefox和Opera浏览器
- 如何检测 IE 10+ 的错误事件
- 是否可以检测IE何时忽略xml文档中的空白文本节点
- 在 JavaScript 中检测 IE 版本(v9 之前)
- IE 检测不起作用
- 在 IE 7+ 检测的条件注释中检测 IE 10
- 检测 Firefox、IE 和 Chrome 中的窗口 onblur() 事件
- 如何检测用户是否正在使用 IE 并通知他们该网站不支持 IE
- 检测显示器是否已从 IE 展台模式打开电源
- Javascript:检测 ascx 页面中的负载.IE浏览器
- 如何检测用户是否在IE中设置主页模型窗口中单击“是或否”
- 澄清使用javascript进行ie检测