Определить доступность функции 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$">
Другие вопросы по тегам