如何使用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