52

我有一個有點問題,在鍍鉻的功能運行在Safari中,無論是WebKit瀏覽器正常工作......如何使用jQuery檢測瀏覽器是否爲Chrome?

我需要自定義一個變量在Chrome的功能,而不是Safari瀏覽器。

可悲的是,我一直用這個來檢測,如果它是一個WebKit瀏覽器:

if ($.browser.webkit) { 

但我需要檢測:

if ($.browser.chrome) { 

有沒有辦法寫一個類似的聲明(上面的工作版本)?

+2

也許你可以張貼破碎功能,看看我們是否能幫助你得到它的鍍鉻工作壓力太大? – Todd 2011-06-14 05:34:27

+0

該功能相當長,我知道如何解決它,我只需要能夠自定義它爲Chrome – TaylorMac 2011-06-14 05:38:09

+3

http://stackoverflow.com/questions/3303858/distinguish-chrome-from-safari-using-jquery-瀏覽器 – 2011-06-14 05:38:09

回答

102
$.browser.chrome = /chrom(e|ium)/.test(navigator.userAgent.toLowerCase()); 

if($.browser.chrome){ 
    ............ 

} 

UPDATE:(10倍到@Mr Bacciagalupe。)

的jQuery已經從1.9和他們最新的版本中刪除$.browser

但你仍然可以使用$ .browser作爲一個獨立的插件,發現here

+1

太簡單了。這工作比其他人好得多,謝謝 – TaylorMac 2011-06-14 05:48:50

+0

@TaylorMac我不知道爲什麼它比別人更好,因爲我發佈的第一個鏈接在第5個評論中有相同的例子,第二個鏈接也使用相同的技術,但向您展示如何檢測其他人。無論如何,我很高興你找到你的解決方案。 – Ben 2011-06-14 06:04:36

+3

Chromium在其User-Agent中也包含「Chrome」,但爲什麼不'/ chrom(e | ium)/'只是爲了安全:) – 2011-10-31 16:27:40

4
var is_chrome = /chrome/.test(navigator.userAgent.toLowerCase()); 
1

雖然它不是jQuery的使用jQuery自己,但對於檢測瀏覽器我用的腳本上this page幾次。它檢測所有主要瀏覽器,,然後一些。這項工作幾乎都是爲你完成的。

6

的userAgent是可以改變的。爲更穩健,使用由鉻

$.browser.chrome = (typeof window.chrome === "object"); 
40
if(/chrom(e|ium)/.test(navigator.userAgent.toLowerCase())){ 
alert('I am chrome'); 
} 
+0

這是在IE邊緣檢測 – blackhawk 2017-01-09 20:52:04

9

用戶無盡的是對指定的全局變量,

$.browser.chrome = (typeof window.chrome === "object"); 

代碼最好使用jQuery來檢測Chrome瀏覽器。

如果你使用IE瀏覽器,並加入GoogleFrame作爲插件然後

var is_chrome = /chrome/.test(navigator.userAgent.toLowerCase()); 

代碼當作Chrome瀏覽器,因爲GoogleFrame插件修改導航性能和增加它裏面chromeframe。

8

這個問題已經在這裏討論:JavaScript: How to find out if the user browser is Chrome?

請試試這個:

var isChromium = window.chrome; 
if(isChromium){ 
    // is Google chrome 
} else { 
    // not Google chrome 
} 

但是,一個更加完整和準確的回答會是這樣,因爲IE11,IE邊緣,和Opera也將返回truewindow.chrome

因此,使用以下:

// please note, 
// that IE11 now returns undefined again for window.chrome 
// and new Opera 30 outputs true for window.chrome 
// and new IE Edge outputs to true now for window.chrome 
// so use the below updated condition 
var isChromium = window.chrome, 
    vendorName = window.navigator.vendor, 
    isOpera = window.navigator.userAgent.indexOf("OPR") > -1, 
    isIEedge = window.navigator.userAgent.indexOf("Edge") > -1; 

if(isChromium !== null 
    && isChromium !== undefined 
    && vendorName === "Google Inc." 
    && isOpera == false 
    && isIEedge == false) { 
    // is Google chrome 
} else { 
    // not Google chrome 
} 

以上帖子建議使用jQuery.browser。但jQuery API建議不要使用此方法 ..(請參閱DOCS in API)。並聲明其功能可能會轉移到未來版本jQuery中支持團隊的插件中。

jQuery API建議使用jQuery.support

原因是'jQuery.browser'使用可能被欺騙的用戶代理,實際上它在jQuery的更高版本中被棄用。如果你真的想使用$ .browser ..以下是獨立jQuery插件的鏈接,因爲它已從jQuery版本1.9.1中刪除。 https://github.com/gabceb/jquery-browser-plugin

最好使用特徵對象檢測代替瀏覽器檢測。

另外,如果您使用Google Chrome檢查器並轉到控制檯選項卡。輸入'窗口',然後按回車。然後你就可以查看'窗口對象'的DOM屬性。當您摺疊對象時,您可以查看所有屬性,包括'chrome'屬性。

我希望這可以幫助,即使問題是如何處理jQuery。但是有時直的javascript更簡單!

1

由於Opera的最新更新!!window.chrome(以及對窗口對象的其他測試),在Opera中測試時返回true。

Conditionizr需要照顧這對你和解決問題的歌劇:

conditionizr.add('chrome', [], function() { 
    return !!window.chrome && !/opera|opr/i.test(navigator.userAgent); 
}); 

我強烈建議使用它作爲以上都不是現在是有效的。

這允許你做:

if (conditionizr.chrome) {...} 

Conditionizr照顧其他瀏覽器的檢測和比jQuery的黑客快得多,可靠。

1

作爲一個快速另外,我很驚訝,沒有人想到了這一點,你可以使用in操作:

"chrome" in window 

顯然,這不是使用JQuery,但我想我會把它因爲當你不使用任何外部庫時,它很方便。

0

當我測試答案@IE時,我總是「真實」。更好的方法是這樣的,其作品也@IE:

var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor); 

正如這個答案說明: https://stackoverflow.com/a/4565120/1201725