détecter ipad/iphone webview via javascript
Est-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?
- Est-ce juste pour les appareils iOS?
Vous devez vous connecter pour publier un commentaire.
Il utilise une combinaison de
window.navigator.userAgent
etwindow.navigator.standalone
. Il peut faire la distinction entre les quatre membres en ce qui concerne un iOS application web: safari (navigateur), autonome (plein écran), uiwebview, et pas iOS.Démo: http://jsfiddle.net/ThinkingStiff/6qrbn/
Safari
dans le userAgent. il se comporte différemment à l'égard nécessitantwebcal://
protocole de .fichiers icsLes Agents Utilisateurs
Cours d'exécution dans UIWebView
Cours d'exécution dans Safari sur l'iPad
Cours d'exécution dans Safari sur Mac OS X
Cours d'exécution dans google Chrome sur Mac OS X
Cours d'exécution dans FireFox sur Mac OS X
Code De Détection
UIWebView
et Safari ontSafari
dans leur user agentVersion
par opposition àSafari
a travaillé pour moi dans le dernier iOS.Version
? Remplacez-vousSafari
avecVersion
dans levar is_uiwebview
ligne?Mozilla/5.0 (iPhone; CPU iPhone OS 11_2 like Mac OS X) AppleWebKit/604.4.7 (KHTML, like Gecko) Mobile/15C107
Je pense que vous pouvez simplement utiliser le
User-Agent
.Mise à JOUR
Page navigué à l'aide de l'iPhone Safari
Je vais essayer dans un deuxième avec UIWebView
La différence est que le Safari on dit
Safari/6531.22.7
Solution
Safari/.....
lui-même est manquant dans la UIWebViewvar isSafari = navigator.userAgent.match(/Safari/i) != null;
(qui renvoie true si l'utilisateur est à partir de Safari et pas une 3ème partie de l'app). Espérons que cette solution sera la dernière...Ouais:
isiPad = /^iPad$/.test(navigator.platform)
etisiPhone = /^iPhone$|^iPod/.test(navigator.platform)
. J'ai toujours traiter un iPod comme un iPhone. Méfiez-vous de l'iPod plate-forme peut parfois utiliser la chaîne de caractères "iPod touch".J'ai essayé toutes ces solutions, mais n'a pas fonctionné dans mon cas,
J'allais à détecter Télégramme à l'intérieur de Webview.
J'ai remarqué Safari est en train de changer de téléphone de style de texte d'un lien avec "tél:" prefix, j'ai donc utilisé cette fonction pour écrire ce code, vous pouvez le tester : jsfiddle
Neoneye la solution ne fonctionne plus (voir les commentaires) et peut être simplifiée.
D'autre part, seuls les tests "Safari" dans le UC adresses beaucoup plus que celui d'ios appareils de poche.
C'est le test que j'utilise :
Pour le Printemps 2018 aucun de la méthode proposée a fonctionné pour moi alors je suis venu avec une nouvelle approche (qui n'est pas userAgent base):
https://gist.github.com/BorisChumichev/7c0ea033daf33da73306a396ffa174d1
Vous êtes les bienvenus pour développer le code pour iPad trop, je pense que ça devrait faire l'affaire.
A bien fonctionné pour le Télégramme, Facebook, VK webviews.
Conseille Modernizr, et la vérification indexeddb comme cette. Vous pourriez croix-vérifier avec l'agent utilisateur de configuration (appareil, système d'exploitation, navigateur, etc), mais de la pure fonctionnalité de détection semble de plus en plus recommandé.
Je sais que ce code va vérifier si il est accessible à partir d'un ajout d'une icône à l'écran d'accueil:
mais je ne suis pas sûr de savoir comment il réagirait face à une UIWebView. La seule autre solution que je pouvais penser est d'obtenir l'agent de l'utilisateur ou à l'aide de
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
et le remplacement de la chaîne de requête de la page, vous accédez avec quelque chose de la page utilise pour vérifier qu'elle est accessible à partir d'un affichage web.Dernière fois que j'ai besoin (JUSTE pour WebView fins), j'ai utilisé cette case:
J'ai trouvé une solution simple pour détecter l'iPhone ou l'iPad. Cela fonctionne pour moi amende.
Working 15.02.19
Une autre solution pour la détection des webviews sur iOS est la vérification de l'appui à l'existence de
navigator.mediaDevices
.Dans mon cas, je n'ai pas besoin de rattraper toutes les webviews, mais ceux qui ne supportent pas l'appareil photo /entrée microphone (Rappel: les Alertes ne déclenchent pas dans Webview, alors assurez-vous de changer quelque chose dans les dom pour des fins de débogage)
Je ne pense pas qu'il y ait quelque chose de spécifique que vous pouvez utiliser en Javascript côté client, mais si vous avez le contrôle sur ce que l'originaires UIWebView pouvez le faire, vous pourriez envisager de jouer avec la chaîne de l'agent utilisateur qu'il génère, et les tests de votre côté client Javascript à la place? Un peu un hack je sais, mais bon... Cette question peut donner quelques conseils sur la façon de modifier l'user agent:
Changement de l'Agent Utilisateur dans UIWebView (SDK de l'iPhone)
@ Gazon,
Eh bien je n'ai pas de réponse, mais je ne suis pas convaincu pourquoi vous voulez vérifier, Depuis, le navigateur, le moteur de son safari ( Navigateur ) ou de l'Application sera même son Webkit seulement,
Oui Application peut configurer le Navigateur moteur de capacités telles que, si l'application veut courir JS ou Afficher une Image etc...
Je crois, vous devez vérifier pour certains biens si Flash prises en charge par le Navigateur, ou si le navigateur affiche l'image ou pas, ou probablement peut-être que vous souhaitez vérifier la taille de l'écran,