如果需要,IE8可以进入IE7模式。 jQuery如何检测到这个?具体来说,$.browser.version
的价值是什么?
答案 0 :(得分:8)
IE7模式下的IE8将报告IE7。 但您可以分析用户代理并检查“Trident / 4.0”。如果您看到此行,则使用IE8
答案 1 :(得分:6)
使用名为浏览器嗅探的概念填充$.browser
obejct。简而言之,这是从浏览器,机器人以及访问该页面的任何其他内容发送的用户代理字符串中扫描数据的过程。
由于用户代理对伪造的敏感性,在jQuery的更高版本中不推荐使用此对象。现在优先使用对象检测和特征检测(参见$.support
)。
例如,Opera 8.5。用于将自己标识为IE: http://www.javascriptkit.com/javatutors/navigator.shtml
$。support:
http://docs.jquery.com/Utilities/jQuery.support
用户代理:
http://en.wikipedia.org/wiki/User_agent
http://www.zytrax.com/tech/web/browser_ids.htm
对象检测:
http://www.quirksmode.org/js/support.html http://developer.apple.com/internet/webcontent/objectdetection.html
浏览器嗅探:
http://en.wikipedia.org/wiki/Browser_sniffing
功能检测:
答案 2 :(得分:2)
我刚刚自己测试了这个(刚刚下载了IE8)
当您使用以下元标记将IE8置于IE7兼容模式时:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
$.browser.version
的值仍 8.0!
答案 3 :(得分:1)
JQuery只能看到浏览器告诉它的内容。
在IE7模式下,浏览器会将自己报告为IE7,这就是JQuery将会看到的内容。
答案 4 :(得分:0)
我是.NET开发人员,我总是喜欢使用我为此类问题创建的Sessions.aspx页面
可以免费使用它,我也可以共享代码。
正如您在本次截屏视频中看到的那样(14秒),您在javascript导航器属性中指定了MSIE 8和MSIE 7,当您将兼容模式更改为渲染页面的引擎略有不同时,它们会发生变化(记住那不是100%的IE7引擎!)
而不是在方法中使用jQuery buit,只需使用普通的javascript
IE7模式下的IE8
4.0(兼容; MSIE 7.0 ; Windows NT 6.0; WOW64; Trident / 4.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30618; .NET CLR 3.5.30729; InfoPath.2; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)
本机模式下的IE8
4.0(兼容; MSIE 8.0 ; Windows NT 6.0; WOW64; Trident / 4.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30618; .NET CLR 3.5.30729; InfoPath.2; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)
代码:
var browserVersion = navigator.appVersion.toLowerCase();
if(browserVersion.contains('msie 8') ) {
// IE 8
}
else if(browserVersion.contains('msie 7') ) {
// IE 7
}
屏幕投射视频:http://www.balexandre.com/temp/showFlash.aspx?swf=2009-08-19_1138_ie8ie7.swf&w=952&h=742