2013-05-05 36 views
0

我正在使用jQuery的瀏覽器插件來檢索瀏覽器名稱和版本。無論如何,我試圖顯示一條消息,如果用戶使用某個瀏覽器和/或某個版本。這裏是我正在使用的:如果聲明與AND和OR

if (($.browser.name == "msie" && $.browser.version <= "8.0") || $.browser.name == "safari" || $.browser.name == "opera") { 
    // Do something 
} 

它一切正常,除了在IE9中顯示的錯誤,它不應該。我希望它僅在版本爲8.0或更低時顯示。聲明有什麼問題?

在此先感謝。

編輯:我現在使用$ .browser.versionNumber,但它仍然不起作用。像這樣:

if (($.browser.name == "msie" && $.browser.versionNumber <= "8") || $.browser.name == "safari" || $.browser.name == "opera") { 
    // Do something 
} 

$ .browser.versionNumber檢索一個數字。在這種情況下,如果我使用IE9,它會發送「9」。

+0

向我們顯示插件名稱。 – steo 2013-05-05 11:08:34

+0

http://jquery.thewikies.com/browser/ – coldpumpkin 2013-05-05 11:09:13

+2

至少你不能在字符串'$ .browser.version <=「8.0」'上使用'<='。 – 2013-05-05 11:10:00

回答

3

正如其他人已經指出的那樣,對字符串中沒有定義<=運營商。

在字符串上有一個<=運算符,但它不是您需要的運算符。例如:

alert('2' <= '10'); // this yields false. 

溶液將使用$.browser.versionNumber

browser.versionNumber:瀏覽器的版本(注意,作爲一個整數)。

像這樣:

​​
+1

<=是字符串的已定義運算符。它只是和數字不一樣。 – 2013-05-05 11:14:28

+0

它工作。使用versionNumber並從8中刪除「」取得了訣竅。謝謝。 – coldpumpkin 2013-05-05 11:25:01

+0

@StevenMoseley感謝您的更正,我相應地更新了我的答案。 – SoonDead 2013-05-05 12:57:28

3

注意,比較字符串給出比數值

$.browser.version <= "8.0" 

例如不同的結果

"10.0" < "8.0" 

也許你只在主版本號intrested,那麼你可以使用parseInt函數來提取。

+0

我現在使用versionNumber字符串。我怎樣才能使用parseInt? – coldpumpkin 2013-05-05 11:15:42

-1

你不應該在一個字符串中使用「< =」:

if (($.browser.name == "msie" && $.browser.version <= 8) || $.browser.name == "safari" || $.browser.name == "opera") { 
// Do something 
} 
0

是IE9在兼容性和/或在您的網站怪癖模式下運行?

這可能會誤導插件,使其認爲您運行的是舊版本。

+0

不,如果我打印版本號,它會打印9. – coldpumpkin 2013-05-05 11:22:54

+1

在這種情況下,您應該針對'<= 8'而不是'<=「8」進行測試' – Phylogenesis 2013-05-05 11:25:29