2015-08-06 2 views
1

У меня есть страница html-javascript, и мне нужно обнаруживать, когда она открывается на веб-сайте (например, в веб-просмотре facebook, в twitter webview и т. Д.), И если это веб-просмотр - отображает другое содержимое.Обнаружение андроид webview

Примечание: Я не контролирую сторонние приложения для Android, поэтому я не могу вносить изменения в их код.

Я уже нашел способ обнаружения WebView IOS (Нашел его на StackOverflow):

var isIosWebview =/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(navigator.userAgent)

Теперь я ищу для яваскрипта кода, который может обнаружить Android веб-просмотра.

Помощь?

+0

Значит, вы этого не нашли и попробовали что-то? https://developer.chrome.com/multidevice/user-agent#webview_user_agent –

+0

Я пробовал до ссылки, которую вы приложили. «Chrome/ Mobile» существует на веб-просмотре, но он также существует в обычном браузере для Android. Так что это не помогает. –

+0

«Версия/4.0», по-видимому, уникальна для Android WebView. –

ответ

3

Вы не можете обнаружить его только с помощью строки пользовательского агента, поскольку любое приложение, использующее WebView, может установить строку UA на все, что захочет.

Если вы все еще настаиваете на использовании строки UA, это объяснение официальных документов: изначально Chromium-WebView использовал .0.0.0 как суффикс версии Chrome; в новых версиях ; wv был добавлен в часть платформы строки UA. Обратите внимание, что в пред-KitKat WebViews не было части Chrome. См. Более старые сообщения об этом: Android, webview user agent vs browser user agent

Другим намеком на вовлечение WebView является наличие HTTP-заголовка X-Requested-With с именем пакета приложения. Обратите внимание, что этот заголовок также задается с помощью XMLHttpRequest, поэтому вам нужно искать фактическое значение заголовка.

Утверждение, что WebView не поддерживает iframe, неверно.

+0

Как получить «X-Requested-With». Я посмотрел на него и не нашел хорошего способа его получить. –

+0

Вы можете видеть это на сервере. Нет способа увидеть это со стороны страницы. –

+0

в flask python, вы можете сделать 'request.headers.get ('X-Requested-With')', и он даст вам имя пакета в виде webView. Это помогло мне заблокировать приложения, которые незаконно показывают мой сайт в webViews. – scottydelta

Смежные вопросы