我正在尝试使用 jquery 或 javascript 检测 chrome 和 safari 浏览器。我认为我们不应该使用 jQuery.browser。这里有什么建议吗?非常感谢!
如何检测chrome和safari浏览器(webkit)
如果您不想使用$.browser
,请查看案例 1,否则也许案例 2和3可以帮助您了解情况,因为不建议使用它$.browser
(用户代理可以使用此方法进行欺骗)。可以使用另一种方法来jQuery.support
检测功能支持而不是代理信息。
但...
如果您坚持获取浏览器类型(仅 Chrome 或 Safari)但不使用$.browser
,则案例 1就是您要查找的...
这符合您的要求:
案例 1:( 没有 jQuery 和 $.browser,只有 javascript)
现场演示: http : //jsfiddle.net/oscarj24/DJ349/
var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
var isSafari = /Safari/.test(navigator.userAgent) && /Apple Computer/.test(navigator.vendor);
if (isChrome) alert("You are using Chrome!");
if (isSafari) alert("You are using Safari!");
我以前使用过这些案例并且效果很好,但不推荐它们......
案例2:( 使用jQuery和$.browser,这个有点棘手)
现场演示: http : //jsfiddle.net/oscarj24/gNENk/
$(document).ready(function(){
/* Get browser */
$.browser.chrome = /chrome/.test(navigator.userAgent.toLowerCase());
/* Detect Chrome */
if($.browser.chrome){
/* Do something for Chrome at this point */
/* Finally, if it is Chrome then jQuery thinks it's
Safari so we have to tell it isn't */
$.browser.safari = false;
}
/* Detect Safari */
if($.browser.safari){
/* Do something for Safari */
}
});
案例3:( 使用jQuery和$.browser,“优雅”的解决方案)
现场演示: http : //jsfiddle.net/oscarj24/uJuEU/
$.browser.chrome = $.browser.webkit && !!window.chrome;
$.browser.safari = $.browser.webkit && !window.chrome;
if ($.browser.chrome) alert("You are using Chrome!");
if ($.browser.safari) alert("You are using Safari!");
这里的大多数答案都已经过时了,没有更多了jQuery.browser
,为什么有人甚至会使用 jQuery 或嗅探User Agent
超出我的范围。
与其检测浏览器,不如检测一个功能
(无论是否支持)。
以下是false
在Mozilla Firefox、Microsoft Edge 中;它true
在谷歌浏览器中。
"webkitLineBreak" in document.documentElement.style
请注意,这不是面向未来的。浏览器可以-webkit-line-break
在未来的任何时间实现该属性,从而导致错误检测。然后你可以在 Chrome 中查看文档对象并选择带有webkit
前缀的任何内容并检查它是否在其他浏览器中丢失。
与其检测浏览器,不如检测一个功能(无论是否支持)。这就是Modernizr所做的。
当然,在某些情况下,您仍然需要检查浏览器,因为您需要解决问题而不是检测功能。WebKit
不使用 jQuery 的特定检查$.browser
:
var isWebKit = !!window.webkitURL;
由于一些评论表明上述方法不适用于较旧的 Safari 版本。使用评论和另一个答案中建议的另一种方法进行更新:
var isWebKit = 'WebkitAppearance' in document.documentElement.style;
2019年仍然存在怪癖和不一致之处。
例如,在浏览器之间缩放 svg 和指针事件。
该主题的所有答案都不再有效。(也许那些有jquery 的)
这是一种替代方法,通过原生CSS 支持 api使用 javascript 测试是否支持 css 规则。可能会进化,要适应!
请注意,可以传递许多由分号分隔的 css 规则,以实现最佳检测。
if (CSS.supports("( -webkit-box-reflect:unset )")){
console.log("WEBKIT BROWSER")
// More math...
} else {
console.log("ENJOY")
}
if (CSS.supports("( -moz-user-select:unset )")){
console.log("FIREFOX!!!")
}
注意不要在循环中使用它,为了提高性能,最好在加载时填充一个常量:
const ff = CSS.supports("( -moz-user-select:unset )")
if (ff){ //... }
@supports (-webkit-box-reflect:unset) {
div {
background: red
}
}
@supports (-moz-user-select:unset) {
div {
background: green
}
}
<div>
Hello world!!
</div>
/WebKit/.test(navigator.userAgent)
- 而已。