尽管两者都是基于Webkit的浏览器,但Safari会对URL中的引号进行编码,而Chrome则不会。
因此,我需要在JS中区分这两个浏览器。 jQuery的浏览器检测文档将"safari"标记为已弃用。
是否有更好的方法,还是现在只能坚持使用已弃用的值?
因此,我需要在JS中区分这两个浏览器。 jQuery的浏览器检测文档将"safari"标记为已弃用。
是否有更好的方法,还是现在只能坚持使用已弃用的值?
使用特性检测
和Useragent
字符串的混合方式:
var is_opera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
var is_Edge = navigator.userAgent.indexOf("Edge") > -1;
var is_chrome = !!window.chrome && !is_opera && !is_Edge;
var is_explorer= typeof document !== 'undefined' && !!document.documentMode && !is_Edge;
var is_firefox = typeof window.InstallTrigger !== 'undefined';
var is_safari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
用法:
if (is_safari) alert('Safari');
或者仅对 Safari 使用此代码:
if ( /^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {alert('Its Safari');}
(Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36)
。 - Blaise以下是Safari 3.0+的特点,以及与Chrome的区别:
isSafari = !!navigator.userAgent.match(/Version\/[\d\.]+.*Safari/)
不幸的是,上述示例也会将 Android 的默认浏览器检测为 Safari,但实际上并不是。我使用了以下代码:navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Chrome') == -1 && navigator.userAgent.indexOf('Android') == -1
我用以下方法来检查Safari:
$.browser.safari = ($.browser.webkit && !(/chrome/.test(navigator.userAgent.toLowerCase())));
if ($.browser.safari) {
alert('this is safari');
}
它工作得很正确。
显然,唯一可靠和被接受的解决方案是像这样进行特性检测:
browser_treats_urls_like_safari_does = false;
var last_location_hash = location.hash;
location.hash = '"blah"';
if (location.hash == '#%22blah%22')
browser_treats_urls_like_safari_does = true;
location.hash = last_location_hash;
if (navigator.userAgent.toLowerCase().match(/(ipad|iphone)/)) {
//is safari
}
$.browser
。但是,如果您正在检查功能支持(推荐),请使用$.support
。if(navigator.userAgent.indexOf('Safari') !=-1 && navigator.userAgent.indexOf('Chrome') == -1)
{
alert(its safari);
}else {
alert('its not safari');
}
//Check if Safari
function isSafari() {
return /^((?!chrome).)*safari/i.test(navigator.userAgent);
}
//Check if MAC
if(navigator.userAgent.indexOf('Mac')>1){
alert(isSafari());
}
我使用以下简单的JavaScript条件来检测苹果浏览器引擎:
navigator.vendor.startsWith('Apple')
$.browser.safari === true
。哎呀。 - davin