Existe-t-il un moyen de différer via javascript si le site Web fonctionne à l'intérieur de l'ipad safari ou à l'intérieur d'une application WebView?
javascript
ipad
ios
webview
gazon
la source
la source
Réponses:
Cela utilise une combinaison de
window.navigator.userAgent
etwindow.navigator.standalone
. Il peut distinguer les quatre états relatifs à une application Web iOS: safari (navigateur), autonome (plein écran), uiwebview et non iOS.Démo: http://jsfiddle.net/ThinkingStiff/6qrbn/
la source
Safari
dans le userAgent. il se comporte différemment en ce qui concerne lewebcal://
protocole requis pour les fichiers .icsAgents utilisateurs
Exécution dans UIWebView
Exécution dans Safari sur iPad
Exécution dans Safari sur Mac OS X
Exécution dans Chrome sur Mac OS X
Exécution dans FireFox sur Mac OS X
Code de détection
la source
UIWebView
et Safari ontSafari
dans leur agent utilisateurVersion
par opposition à aSafari
fonctionné pour moi dans le dernier iOS.Version
? Remplacez-vousSafari
parVersion
dans lavar is_uiwebview
ligne?Je pense que vous pouvez simplement utiliser le
User-Agent
.METTRE À JOUR
Page parcourue avec iPhone Safari
J'essaierai dans une seconde avec UIWebView
La différence est que le Safari dit
Safari/6531.22.7
Solution
la source
Safari/.....
lui-même manque dans l'UIWebViewOuais:
la source
J'ai essayé toutes ces solutions mais cela n'a pas fonctionné dans mon cas,
j'allais détecter Telegram dans Webview. J'ai remarqué que Safari change le texte du style du téléphone en un lien avec le préfixe "tel:", donc j'ai utilisé ceci pour écrire ce code, vous pouvez le tester: jsfiddle
la source
navigator.platform === 'MacIntel'
. Cela affecte particulièrement iPadOS 13 Mobile Safari car il utilise le mode bureau par défaut.La solution de Neoneye ne fonctionne plus (voir commentaires) et peut être simplifiée. D'un autre côté, tester uniquement "Safari" dans l'UA adresse beaucoup plus que les appareils portables ios.
Voici le test que j'utilise:
la source
Pour le printemps 2018, aucune des méthodes proposées n'a fonctionné pour moi, j'ai donc proposé une nouvelle approche (qui n'est pas basée sur userAgent):
https://gist.github.com/BorisChumichev/7c0ea033daf33da73306a396ffa174d1
Vous êtes également invité à étendre le code pour les appareils iPad, je pense que cela devrait faire l'affaire.
A bien fonctionné pour Telegram, Facebook, VK webviews.
la source
Working 15.02.19
Une autre solution pour détecter les vues Web sur iOS consiste à vérifier la prise en charge / l'existence de
navigator.mediaDevices
.Dans mon cas, je n'ai pas eu besoin de capturer toutes les vues Web, mais celles qui ne prennent pas en charge l'entrée caméra / microphone (rappel: les alertes ne se déclenchent pas dans Webview, alors assurez-vous de modifier quelque chose dans le dom à des fins de débogage)
la source
Je sais que ce code vérifiera s'il est accessible à partir d'une icône ajoutée à l'écran d'accueil:
mais je ne sais pas comment il réagirait dans un UIWebView. La seule autre solution à laquelle je pourrais penser est d'obtenir l'agent utilisateur ou d'utiliser
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
et de remplacer la chaîne de requête de la page à laquelle vous accédez par quelque chose que la page utilise pour identifier qu'elle est accessible à partir d'une vue Web.la source
Je suggère d'utiliser Modernizr et de vérifier indexeddb comme ceci . Vous pouvez contre-vérifier cela avec la configuration de l'agent utilisateur (périphérique, système d'exploitation, navigateur, etc.), mais la détection des fonctionnalités pures semble plus recommandée.
la source
La dernière fois que j'en ai eu besoin (JUSTE à des fins WebView), j'ai utilisé cette vérification:
la source
J'ai trouvé une solution simple pour détecter un iPhone ou un iPad. Cela fonctionne bien pour moi.
la source
Essayez avec IOS 13
la source
Je ne pense pas que vous puissiez utiliser quoi que ce soit de spécifique dans Javascript côté client, mais si vous avez le contrôle sur ce que l'UIWebView d'origine peut faire, vous voudrez peut-être envisager de jouer avec la chaîne d'agent utilisateur qu'il génère et de tester cela dans votre Javascript côté client à la place? Un petit hack je sais, mais bon… Cette question peut donner quelques conseils pour peaufiner l'agent utilisateur:
Changer l'agent utilisateur dans UIWebView (iPhone SDK)
la source
@ Sod, Eh bien, je n'ai pas de réponse, mais je ne suis pas convaincu pourquoi vous voulez vérifier, Depuis, le moteur de navigateur si son safari (navigateur) ou son application sera le même que son Webkit, Oui, l'application peut configurer les capacités du moteur du navigateur comme , si l'application souhaite exécuter JS ou afficher l'image, etc.
Je crois que vous devez vérifier certaines propriétés si Flash est pris en charge par le navigateur ou si le navigateur affiche une image ou non, ou peut-être souhaitez-vous vérifier la taille de l'écran,
la source