如何仅在桌面端检测Safari浏览器?

3
如何仅检测桌面版的Safari浏览器? 我想要知道用户是否正在使用桌面设备而不是移动设备。
var ua = navigator.userAgent.toLowerCase(); 
if (ua.indexOf('safari') != -1) { 
    //find safari
}

我注意到桌面版Safari不支持input[type=date],但移动版Safari(也就是Webkit?)支持。所以对我来说,重要的是能够确定用户是否在桌面端。
非常感谢,抱歉我的英语不好。

可能是 https://dev59.com/YnA75IYBdhLWcg3wBkO1 的重复问题。 - Stefan Blamberg
@StefanBlamberg,如果“你的问题”是如何使用jQuery检测移动设备,而我的问题是如何仅检测桌面版Safari,那么怎么可能会重复呢?! - Borja
我有点困惑,为什么你不能使用那里提供的答案来确保它不是移动Safari版本?例如 if (/Mobi|Android/i.test(navigator.userAgent)) { // mobile! },就像 https://dev59.com/YnA75IYBdhLWcg3wBkO1#24600597 中所示。 - Stefan Blamberg
你只想针对Safari浏览器吗?是移动端还是桌面端?你期望的是Windows和Mac用户还是只有其中一个,或者其他什么? - daddygames
对我来说,只要知道是否是桌面版Safari很重要,因为我有一个日期输入类型,而Safari(在桌面上)不支持它。https://caniuse.com/#feat=input-datetime - Borja
@Borja 请不要滥用评论标记,这里没有任何远近都不符合“骚扰、偏见或虐待”的行为。 - user229044
1个回答

8
const uA = navigator.userAgent;
const vendor = navigator.vendor;
if (/Safari/i.test(uA) && /Apple Computer/.test(vendor) && !/Mobi|Android/i.test(uA)) {
  //Desktop Safari
}

3
Chrome的用户代理中包含Safari信息,因此会被检测到。 - pscheit
@P.Scheit 感谢您指出这一点,我根据 https://dev59.com/pHA75IYBdhLWcg3wboYz 更新了答案。 - Stefan Blamberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接