虽然两者都是基于Webkit的浏览器,但Safari URL在URL中编码引号,而Chrome则不编码.

因此,我需要在JS中区分这两个.

jQuery's browser detection docs mark "safari" as deprecated.

有没有更好的方法,或者我现在只是坚持使用不推荐使用的值?

推荐答案

Using a mix of feature detection and Useragent string:

    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);

Usage:
if (is_safari) alert('Safari');

或者仅用于Safari,请使用以下选项:

if ( /^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {alert('Its Safari');}

Jquery相关问答推荐

ASP.NET MVC - Ajax 将空值传递给控制器

使用 jQuery / Javascript (querystring) 获取查询字符串参数 url 值

document.querySelector 一个元素中的多个数据属性

Jquery Ajax,从 mvc.net 控制器返回成功/错误

在大写字母前插入空格

jQuery:获取数据属性

如果不是 jQuery,Javascript 中的美元符号是什么

清除并刷新 jQuery Chosen 下拉列表

Codemirror 编辑器在单击之前不会加载内容

即时替换 css 文件(并将新样式应用于页面)

测试两个元素是否相同

修改查询字符串而不重新加载页面

有人可以解释如何实现 jQuery File Upload 插件吗?

为什么这个 jQuery 点击功能不起作用?

了解 Backbone.js REST 调用

缺少 .map 资源?

错误“找不到 jquery-2.0.2.min.map”

如何检测 window.print() 完成

jQuery ajax() 使用成功、错误和完成与 .done()、.fail() 和 always()

bootstrap 模式:关闭当前,打开新