2015-08-06 1 views
1

J'ai une page html-javascript, et j'ai besoin de détecter chaque fois qu'il ouvre sur le web (comme dans facebookview web, twitter webview, etc.), et si c'est un webview - afficher un autre contenu.Détecter android webview

Remarque: Je ne contrôle pas les applications Android tierces. Par conséquent, je ne peux pas modifier leur code.

je l'ai déjà trouvé un moyen de détecter un IOS WebView (trouvé sur stackoverflow):

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

Maintenant, je suis à la recherche d'un code javascript qui permet de détecter l'affichage Web Android.

Aide?

+0

Donc, vous ne l'avez pas trouvé et essayer quelque chose? https://developer.chrome.com/multidevice/user-agent#webview_user_agent –

+0

J'ai essayé avant le lien que vous avez joint. Le "chrome/ Mobile" existe sur le webview, mais il existe aussi sur le navigateur Android normal - Donc ça n'aide pas. –

+0

'Version/4.0' semble être unique à l'Android WebView. –

Répondre

3

Vous ne pouvez pas le détecter en utilisant uniquement la chaîne de l'agent utilisateur, car toute application qui utilise WebView peut définir la chaîne UA sur ce qu'elle souhaite.

Si vous insistez toujours sur l'utilisation de la chaîne UA, voici l'explication des documents officiels: initialement, WebView à base de chrome utilisait .0.0.0 comme suffixe de version Chrome; dans les versions les plus récentes ; wv a été ajouté dans la partie plate-forme de la chaîne UA. Notez que les WebViews pré-KitKat n'ont pas la pièce Chrome. Voir les messages plus anciens à ce sujet: Android, webview user agent vs browser user agent

Un autre indice de l'implication de WebView est la présence de l'en-tête HTTP X-Requested-With avec un nom de package d'application. Notez que cet en-tête est également défini par XMLHttpRequest, vous devez donc rechercher la valeur réelle de l'en-tête.

L'instruction que WebView ne prend pas en charge iframes n'est pas correcte.

+0

Comment obtenir le "X-Requested-With". Je l'ai regardé, et n'ai pas trouvé un bon moyen de l'obtenir. –

+0

Vous pouvez le voir sur le serveur. Il n'y a aucun moyen de le voir du côté de la page. –

+0

dans flask python, vous pouvez faire 'request.headers.get ('X-Requested-With')' et il vous donnera le nom du paquet incase de webView. Cela m'a aidé à bloquer les applications qui montrent illégalement mon site sur webViews. – scottydelta