如何解决如何使用jQuery检测浏览器是否为Chrome?
| 我在chrome中运行的功能在Safari和两个webkit浏览器中均能正常工作时遇到了一些问题... 我需要为Chrome(而非Safari)自定义函数中的变量。 可悲的是,我一直在使用它来检测它是否是一个Webkit浏览器:if ($.browser.webkit) {
但是我需要检测:
if ($.browser.chrome) {
有什么办法可以写出类似的陈述(上述陈述的有效版本)?
解决方法
$.browser.chrome = /chrom(e|ium)/.test(navigator.userAgent.toLowerCase());
if($.browser.chrome){
............
}
更新:(10倍@ Bacciagalupe先生)
jQuery已从1.9及其最新版本中删除了ѭ3removed。
但是您仍然可以将$ .browser用作独立插件,在此处找到
, if(/chrom(e|ium)/.test(navigator.userAgent.toLowerCase())){
alert(\'I am chrome\');
}
, 这个问题已经在这里讨论:JavaScript:如何确定用户浏览器是否是Chrome?
请尝试以下方法:
var isChromium = window.chrome;
if(isChromium){
// is Google chrome
} else {
// not Google chrome
}
但是,由于IE11,IE Edge和Opera还将以ѭ7的形式返回true
,因此将给出更完整和准确的答案。
因此,使用以下内容:
// 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建议不要使用此方法。(请参阅API中的DOCS)。并指出其功能可能会在jQuery的未来版本中转移到团队支持的插件中。
jQuery API建议使用jQuery.support
。
原因是\'jQuery.browser \'使用了可以被欺骗的用户代理,并且在更高版本的jQuery中实际上已弃用该代理。如果您真的想使用$ .browser ..,这是指向独立jQuery插件的链接,因为它已从jQuery 1.9.1版中删除。 https://github.com/gabceb/jquery-browser-plugin
最好使用特征对象检测而不是浏览器检测。
另外,如果您使用Google Chrome浏览器检查器并转到控制台标签。输入\'window \',然后按Enter。然后,您可以查看“窗口对象”的DOM属性。折叠对象时,您可以查看所有属性,包括\'chrome \'属性。
我希望这会有所帮助,即使问题是如何使用jQuery。但是有时候,简单的javascript更简单!
, 用户Endless是对的,
$.browser.chrome = (typeof window.chrome === \"object\");
代码最适合使用jQuery检测Chrome浏览器。
如果您使用IE并将GoogleFrame添加为插件,则
var is_chrome = /chrome/.test( navigator.userAgent.toLowerCase() );
代码将被视为Chrome浏览器,因为GoogleFrame插件会修改navigator属性并在其中添加chromeframe。
, var is_chrome = /chrome/.test( navigator.userAgent.toLowerCase() );
, 可以更改userAgent。为了更强大,请使用chrome指定的全局变量
$.browser.chrome = (typeof window.chrome === \"object\");
, if(navigator.vendor.indexOf(\'Goog\') > -1){
//Your code here
}
, 虽然它不是Jquery,但我自己使用jquery,但是为了浏览器检测,我已经多次使用了此页面上的脚本。它会检测所有主要浏览器,然后再检测一些。这项工作几乎已经为您完成。
, 遗憾的是,当Opera中的测试返回true时,由于Opera的最新更新!!window.chrome
(以及对窗口对象的其他测试)。
Conditionizr会为您解决此问题并解决Opera问题:
conditionizr.add(\'chrome\',[],function () {
return !!window.chrome && !/opera|opr/i.test(navigator.userAgent);
});
我强烈建议您使用它,因为上述所有方法均无效。
这使您可以执行以下操作:
if (conditionizr.chrome) {...}
Conditionizr负责其他浏览器的检测,并且比jQuery hacks更快,更可靠。
, 作为快速补充,令我惊讶的是没有人想到这一点,您可以使用in
运算符:
\"chrome\" in window
显然,这不是使用JQuery,但我认为我会把它放进去,因为它在不使用任何外部库的时候很方便。
, 当我测试答案@IE时,总是得到“ true”。更好的方法是也可以在@IE下运行:
var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
如此答案中所述:
https://stackoverflow.com/a/4565120/1201725
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。