2009-08-19 40 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!