1

我正在使用 jQuery Smartbanner ( https://github.com/jasny/jquery.smartbanner ) 来支持跨移动操作系统的智能横幅。但我遇到了一个问题,即只有 iOS Safari 本身支持 smartbanner 功能,而其他 iOS 浏览器不支持。因此,当我只是激活这个插件时,safari 会向我展示两个智能横幅(本机和自定义)和其他浏览器 - 就像假设的那样 - 一个。我添加了下一个检查,以确保用户在 iphone/ipad/ipod 和 safari 上。

if ( !(/(iPad|iPhone|iPod).*OS [6-7].*AppleWebKit.*Mobile.*Safari/.test(navigator.userAgent)) )
    $.smartbanner()

但是这个条件检查限制了所有 iOS 移动浏览器,不仅仅是 Safari。所以我发现,我不能简单地检测移动 safari 以便不专门在其上应用 smartbanner() 插件。

关于专门检测 iOS Safari 的任何提示?

Ps:所有 safari 浏览器在 navigator.userAgent 中都有“Safari”字样

4

2 回答 2

0

目前通过在条件中添加“版本”字样来解决该问题。我发现只有 safari 在 iOS 上的 userAgent 中有这个词(Chrome,例如没有)。

所以最终条件如下所示:

if ( !(/(iPad|iPhone|iPod).*OS [6-7].*AppleWebKit.*Version.*Mobile.*Safari/.test(navigator.userAgent)) )
    $.smartbanner()
于 2014-03-31T14:36:49.413 回答
0

对于那些寻找替代解决方案的人,您还可以查看在 iOS 和 Android 上开箱即用的smartbanner.js 。

您还可以基于元标记进行定位,例如仅适用于 Android:

<meta name="smartbanner:enabled-platforms" content="android">

或更复杂的方式:

<meta name="smartbanner:exclude-user-agent-regex" content="^.*My Example Webapp$">
于 2020-06-17T22:26:59.180 回答