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

时间:2011-06-14 05:32:44

标签: jquery jquery-ui google-chrome jquery-selectors cross-browser

我在Chrome中运行的函数有一些问题,它在Safari中正常运行,两个webkit浏览器......

我需要在Chrome的功能中自定义变量,但不能在Safari中自定义。

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

if ($.browser.webkit) {

但我需要发现:

if ($.browser.chrome) {

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

11 个答案:

答案 0 :(得分:106)

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

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

}

更新:(10x to @Mr.Bacciagalupe)

jQuery已从 1.9 及其最新版本中删除了$.browser

但你仍然可以使用$ .browser作为独立的插件,找到here

答案 1 :(得分:45)

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

答案 2 :(得分:10)

此问题已在此处讨论过: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 Edge和Opera也会为true

返回window.chrome,因此会有更完整和准确的答案。

所以使用以下内容:

// please note, 
// that IE11 now returns undefined again for window.chrome
// and new Opera 30 outputs true for window.chrome
// but needs to check if window.opr is not undefined
// and new IE Edge outputs to true now for window.chrome
// and if not iOS Chrome check
// so use the below updated condition
var isChromium = window.chrome;
var winNav = window.navigator;
var vendorName = winNav.vendor;
var isOpera = typeof window.opr !== "undefined";
var isIEedge = winNav.userAgent.indexOf("Edge") > -1;
var isIOSChrome = winNav.userAgent.match("CriOS");

if (isIOSChrome) {
   // is Google Chrome on IOS
} else if(
  isChromium !== null &&
  typeof 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检查器并转到控制台选项卡。输入“窗口”,然后按Enter键。然后,您就可以查看“窗口对象”的DOM属性。折叠对象时,您可以查看所有属性,包括“chrome”属性。

我希望这会有所帮助,即使问题是如何处理jQuery。但有时直接javascript更简单!

答案 3 :(得分:9)

User Endless是对的,

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

代码最适合使用jQuery检测Chrome浏览器。

如果您使用IE并添加GoogleFrame作为插件,那么

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

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

答案 4 :(得分:5)

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

答案 5 :(得分:5)

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

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

答案 6 :(得分:1)

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

答案 7 :(得分:1)

可悲的是,由于Opera的最新更新!!window.chrome(以及对窗口对象的其他测试),在Opera中进行测试时返回true。

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

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

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

这允许你这样做:

if (conditionizr.chrome) {...}

Conditionizr负责其他浏览器检测,比jQuery hacks更快更可靠。

答案 8 :(得分:1)

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

"chrome" in window

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

答案 9 :(得分:0)

当我测试答案@IE时,我总是"真实"。更好的方法是@IE:

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

如本回答所述: https://stackoverflow.com/a/4565120/1201725

答案 10 :(得分:0)

if(navigator.vendor.indexOf('Goog') > -1){
  //Your code here
}