Определить доступность функции iOS Smartbanner
Я использую jQuery Smartbanner ( https://github.com/jasny/jquery.smartbanner) для поддержки смарт-баннеров на нескольких мобильных ОС. Но я столкнулся с проблемой, что ТОЛЬКО для iOS сафари изначально поддерживает функцию smartbanner, а для других браузеров iOS - нет. Поэтому, когда я просто активирую этот плагин, Safari показывает мне буксировочные смарт-баннеры (нативные и пользовательские) и другие браузеры - как предполагалось - один. Я добавил следующую проверку, чтобы убедиться, что пользователь подключен к iphone / ipad / ipod и safari.
if ( !(/(iPad|iPhone|iPod).*OS [6-7].*AppleWebKit.*Mobile.*Safari/.test(navigator.userAgent)) )
$.smartbanner()
Но эта условная проверка ограничивает все мобильные браузеры iOS, не только Safari. Итак, я понял, что не могу просто обнаружить мобильное сафари, чтобы не применять плагин smartbanner() специально к нему.
Какие-нибудь советы по определению iOS Safari?
PS: во всех браузерах Safari есть слово "Safari" внутри navigator.userAgent
1 ответ
В настоящее время исправлена эта проблема путем добавления слова "Версия" в условие. Я обнаружил, что только в Safari есть это слово внутри userAgent на iOS (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$">