如何使用jQuery检测浏览器是否为Chrome?

我在Chrome中运行的函数有一个问题,在Safari中都能正常工作,都是webkit浏览器。

我需要为Chrome定制一个函数的variables,但不适用于Safari。

可悲的是,我一直在使用它来检测它是否是一个webkit浏览器:

if ($.browser.webkit) { 

但是我需要检测:

 if ($.browser.chrome) { 

有没有办法写出类似的声明(上面的工作版本)?

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

更新:( 10倍到@Mc。Bacciagalupe)

jQuery已经从1.9和他们的最新版本中删除了$.browser

但是你仍然可以使用$ .browser作为一个独立的插件,在这里find

 if(/chrom(e|ium)/.test(navigator.userAgent.toLowerCase())){ alert('I am chrome'); } 

用户无尽是正确的,

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

代码最好是使用jQuery检测Chrome浏览器。

如果您使用IE并添加GoogleFrame作为插件然后

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

代码将视为Chrome浏览器,因为GoogleFrame插件会修改导航器属性并在其中添加chromeframe。

这个问题已经在这里讨论了: JavaScript:如何找出用户浏览器是否是Chrome?

请试试这个:

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

但是,由于IE11,IE Edge和Opera也会为window.chrome返回true ,所以会有更完整和准确的答案

所以使用下面的:

 // 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 } 

以上postbuild议使用jQuery.browser。 但jQuery APIbuild议不要使用此方法 ..(请参阅API中的DOCS )。 并说明其function可能会转移到未来版本的jQuery支持团队的插件。

jQuery APIbuild议使用jQuery.support

原因在于“jQuery.browser”使用的是可以被欺骗的用户代理,实际上在jQuery的更高版本中已经弃用了它。 如果你真的想使用$ .browser ..这里是独立的jQuery插件的链接,因为它已经从jQuery版本1.9.1中删除。 https://github.com/gabceb/jquery-browser-plugin

最好使用function对象检测代替浏览器检测。

另外,如果您使用Google Chrome检查器并转到控制台选项卡。 input“窗口”,然后按回车。 然后您就可以查看“窗口对象”的DOM属性。 当你折叠对象时,你可以查看所有的属性,包括'chrome'属性。

我希望这有助于,即使问题是如何与jQuery。 但是有时候直的javascript更简单!

userAgent可以改变。 为了更健壮,使用由chrome指定的全局variables

 $.browser.chrome = (typeof window.chrome === "object"); 
 var is_chrome = /chrome/.test( navigator.userAgent.toLowerCase() ); 

虽然它不是jquery,我自己使用jquery,但是对于浏览器检测,我已经使用了这个页面上的脚本几次。 它检测所有主stream浏览器, 然后一些 。 这项工作几乎都是为你完成的。

令人遗憾的是,由于Opera的最新更新!!window.chrome (以及对窗口对象的其他testing)在Opera中testing时返回true。

Conditionizr为您解决了这个问题,并解决了Opera问题:

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

我强烈build议使用它,因为以上都不是现在有效。

这可以让你做到:

 if (conditionizr.chrome) {...} 

Conditionizr照顾其他浏览器检测,并比jQuery黑客快得多,可靠。

作为一个快速补充,我很惊讶没有人想到这一点,你可以使用in运算符:

 "chrome" in window 

显然这不是使用JQuery,但我想我会把它,因为它很方便的时候,你不使用任何外部库。

当我testing答案@IE时,我总是“真实”。 更好的办法是这也是@IE:

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

正如在这个答案中所述: https : //stackoverflow.com/a/4565120/1201725