2009-08-19 39 views
4

如果需要,IE8可以进入IE7模式。 jQuery如何检测这个?具体来说,$.browser.version的价值是多少?

回答

8

在IE7模式下的IE8会报告IE7。 但是你可以分析用户代理并检查“Trident/4.0”。如果你看到这条线,那么你用IE8

+0

“IE7标准模式”中的IE 8仍然从$ .browser.version报告“8.0”。 – bart 2012-11-21 00:46:01

6

$.browser obejct填充使用一个概念知道浏览器嗅探。简而言之,这是将数据从用户代理字符串中扫描出来的过程,这些字符串是由浏览器,机器人以及访问该页面的其他内容发送的。

由于用户代理伪造的敏感性,此对象在jQuery的更高版本中不推荐使用。目标检测和特征检测(请参阅$.support)现在优先使用。

例如,Opera 8.5。用于自己标识为IE: http://www.javascriptkit.com/javatutors/navigator.shtml

$。支持:

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

特征检测:

http://docs.jquery.com/Utilities/jQuery.support

+1

好吧,是的,这很不错,但是'support'属性告诉我IE是否支持'inline-block'? 'leadingWhitespace,tbody,objectAll,htmlSerialize,style,hrefNormalized,opacity,cssFloat,scriptEval,noCloneEvent,boxModel' – nickf 2009-08-19 11:42:08

+0

不知道他们是否会这样做。您可以尝试扩展.support功能(请参阅http://www.waytoocrowded.com/2009/03/14/jquery-supportminheight/上的示例),或者甚至有人已经扩展了此功能。不过,这对我来说有点不明确。 – 2009-08-19 12:21:44

1

JQuery只能看到浏览器告诉它的内容。

在IE7模式下,浏览器将自己报告为IE7,这就是JQuery将看到的内容。

+1

什么浏览器告诉它可以是一个谎言 – 2009-08-19 09:29:52

+0

嗯,有点......当在IE7模式下,一切应该像浏览器真的是IE7。浏览器报告渲染引擎的版本,而不是程序的实际版本。 – Guffa 2009-08-19 09:33:33

0

工作,我是.NET开发人员,我总是喜欢用一个Sessions.aspx页,我为这个问题kind'a创建

下跌免费使用它,我也可以共享代码。

正如您刚才所做的(14秒)您可以看到的MSIE 8和MSIE 7在javascript navigator属性中指定的那样,它们会在您更改兼容模式时发生更改,因为呈现页面的引擎略有不同(请记住,这不是100%的IE7引擎!)

,而不是使用在方法jQuery的BUIT,只要使用一般的JavaScript

IE8在IE7模式

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;三叉戟/ 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

+1

哇,那届会议页面已经过时了 – Kloar 2013-05-16 18:58:25

+0

有更好的吗? – balexandre 2013-05-16 21:29:32

2

我只是测试了这一点,我自己(刚刚下载的IE8)

当你将IE8与IE7兼容时,像这样的标签:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> 

$.browser.version值是仍然 8.0!