我正在使用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。因此,我发现,我不能仅仅为了不专门应用smartbanner()插件而简单地检测移动safari。
有关专门检测iOS Safari的任何技巧?
P.s .:所有safari浏览器在navigator.userAgent中都有“ Safari”一词
当前通过在条件中添加“版本”一词来解决该问题。我发现只有Safari才能在iOS的userAgent中使用这个词(Chrome,例如,没有)。
所以最终条件如下:
if ( !(/(iPad|iPhone|iPod).*OS [6-7].*AppleWebKit.*Version.*Mobile.*Safari/.test(navigator.userAgent)) )
$.smartbanner()
对于那些寻求替代解决方案的人,您也可以选中smartbanner.js,它在iOS和Android上都是开箱即用的。
您还可以基于元标记进行定位,例如仅适用于Android:
<meta name="smartbanner:enabled-platforms" content="android">
或更复杂的方式:
<meta name="smartbanner:exclude-user-agent-regex" content="^.*My Example Webapp$">