检测 Safari 浏览器

新手上路,请多包涵

如何使用 JavaScript 检测 Safari 浏览器?我尝试了下面的代码,它不仅检测到 Safari,还检测到 Chrome 浏览器。

function IsSafari() {

  var is_safari = navigator.userAgent.toLowerCase().indexOf('safari/') > -1;
  return is_safari;

}

原文由 Tomas 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

您可以轻松地使用 Chrome 的索引来过滤掉 Chrome:

 var ua = navigator.userAgent.toLowerCase();
 if (ua.indexOf('safari') != -1) {
 if (ua.indexOf('chrome') > -1) {
 alert("1") // Chrome
 } else {
 alert("2") // Safari
 }
 }

原文由 david 发布,翻译遵循 CC BY-SA 3.0 许可协议

注意: 始终尝试检测您要修复的特定行为,而不是使用 isSafari? 作为目标

作为最后的手段, 使用此正则表达式检测 Safari:

 var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);

它使用 负面环视,并且排除了 Chrome、Edge 和所有在其用户代理中包含 Safari 名称的 Android 浏览器。

原文由 fregante 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题