虽然两者都是基于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相关问答推荐

使用jQuery筛选器搜索输入仅适用于单词的一部分

从克隆的输入中读取数据属性,返回初始输入的值

jQuery .append() 创建两个元素而不是一个

模糊事件阻止点击事件工作?

JQuery 数据 Select 器不使用 .data 更新

用jquery查找div底部的位置

如何使用 jQuery 清空输入值?

调用 jquery ajax - .fail vs. :error

如何使用 jQuery 获取 div 的当前类?

如何使用 jQuery 或 JavaScript 模拟单击​​按钮的动作?

Backbone.js 和 jQuery

如何在 JavaScript 或 jQuery 中规范化 HTML?

字符串化(转换为 JSON)具有循环引用的 JavaScript 对象

如何更改 dropzone.js 中的默认文本?

所有选中复选框的 jQuery 数组(按类)

如何将文本从 div 复制到剪贴板

jquery: $(window).scrollTop() 但没有 $(window).scrollBottom()

jQuery $(".class").click(); - 多个元素,点击事件一次

Backbone.js - 事件,知道点击了什么

如何在 jquery 中获取 textarea 的值?