Gibt es eine Möglichkeit, sich über Javascript zu unterscheiden, wenn die Website innerhalb der iPad-Safari oder in einer Anwendung WebView ausgeführt wird?
javascript
ipad
ios
webview
Rasen
quelle
quelle
Antworten:
Dies verwendet eine Kombination von
window.navigator.userAgent
undwindow.navigator.standalone
. Es kann zwischen allen vier Zuständen unterscheiden, die sich auf eine iOS-Webanwendung beziehen: Safari (Browser), Standalone (Vollbild), UIwebview und nicht iOS.Demo: http://jsfiddle.net/ThinkingStiff/6qrbn/
quelle
Safari
im userAgent. es verhält sich anders in Bezug auf das Erfordernis eineswebcal://
Protokolls für .ics-DateienBenutzeragenten
Wird in UIWebView ausgeführt
Laufen in Safari auf dem iPad
Wird in Safari unter Mac OS X ausgeführt
Laufen in Chrome unter Mac OS X.
Wird in FireFox unter Mac OS X ausgeführt
Erkennungscode
quelle
UIWebView
Safari als auch SafariSafari
in ihrem BenutzeragentenVersion
im Gegensatz zuSafari
für mich in der neuesten iOS funktioniert.Version
? Ersetzen SieSafari
mitVersion
in dervar is_uiwebview
Leitung?Ich denke, dass Sie nur die verwenden können
User-Agent
.AKTUALISIEREN
Mit iPhone Safari durchsuchte Seite
Ich werde es gleich mit UIWebView versuchen
Der Unterschied ist, dass die Safari sagt
Safari/6531.22.7
Lösung
quelle
Safari/.....
selbst fehlt in der UIWebViewJa:
quelle
Ich habe alle diese Lösungen ausprobiert, aber in meinem Fall nicht funktioniert.
Ich wollte Telegramm in Webview erkennen. Ich habe festgestellt, dass Safari den Text im Telefonstil in einen Link mit dem Präfix "tel:" ändert. Daher habe ich diesen Code zum Schreiben dieses Codes verwendet. Sie können ihn testen: jsfiddle
quelle
navigator.platform === 'MacIntel'
. Dies betrifft insbesondere iPadOS 13 Mobile Safari, da standardmäßig der Desktop-Modus verwendet wird.Die Lösung von Neoneye funktioniert nicht mehr (siehe Kommentare) und kann vereinfacht werden. Wenn Sie jedoch nur "Safari" in der UA testen, werden viel mehr Adressen als auf den ios-Handheld-Geräten angesprochen.
Dies ist der Test, den ich benutze:
quelle
Für das Frühjahr 2018 hat keine der vorgeschlagenen Methoden für mich funktioniert, daher habe ich einen neuen Ansatz entwickelt (der nicht auf UserAgent basiert):
https://gist.github.com/BorisChumichev/7c0ea033daf33da73306a396ffa174d1
Sie können den Code auch gerne für iPad-Geräte erweitern. Ich denke, das sollte reichen.
Funktionierte gut für Telegramm-, Facebook- und VK-Webviews.
quelle
Working 15.02.19
Eine andere Lösung zum Erkennen von Webviews unter iOS besteht darin, die Unterstützung / Existenz von zu überprüfen
navigator.mediaDevices
.In meinem Fall musste ich nicht alle Webansichten abfangen, sondern diejenigen, die keine Kamera- / Mikrofoneingabe unterstützen (Erinnerung: Warnungen werden in Webview nicht ausgelöst, ändern Sie also etwas im Dom für Debug-Zwecke).
quelle
Ich weiß, dass dieser Code über ein Symbol auf dem Startbildschirm überprüft, ob auf ihn zugegriffen wird:
Ich bin mir jedoch nicht sicher, wie es in einer UIWebView reagieren würde. Die einzige andere Lösung, die mir in den Sinn kommt, besteht darin, den Benutzeragenten abzurufen oder
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
die Abfragezeichenfolge der Seite, auf die Sie zugreifen, durch etwas zu ersetzen, das die Seite verwendet, um zu identifizieren, dass über eine Webansicht auf sie zugegriffen wird.quelle
Ich würde vorschlagen, Modernizr zu verwenden und nach indexeddb wie diesem zu suchen . Sie können dies anhand der Konfiguration des Benutzeragenten (Gerät, Betriebssystem, Browser usw.) überprüfen, aber eine reine Funktionserkennung wird empfohlen.
quelle
Als ich dies das letzte Mal brauchte (NUR für WebView-Zwecke), habe ich diese Prüfung verwendet:
quelle
Ich habe eine einfache Lösung gefunden, um iPhone oder iPad zu erkennen. Das funktioniert bei mir gut.
quelle
Versuchen Sie es mit IOS 13
quelle
Ich glaube nicht, dass Sie in clientseitigem Javascript etwas Spezielles verwenden können, aber wenn Sie die Kontrolle darüber haben, was das ursprüngliche UIWebView tun kann, sollten Sie in Betracht ziehen, mit der von ihm generierten Benutzeragentenzeichenfolge zu spielen und dies in Ihrem zu testen clientseitiges Javascript statt? Ein bisschen wie ein Hack, den ich kenne, aber hey ... Diese Frage kann einige Hinweise zum Optimieren des Benutzeragenten geben:
Benutzeragent in UIWebView ändern (iPhone SDK)
quelle
@ Sod, Nun, ich habe keine Antwort, aber ich bin nicht überzeugt, warum Sie überprüfen möchten, da die Browser-Engine, ob ihre Safari (Browser) oder Anwendung nur mit ihrem Webkit identisch ist, Ja, Anwendung kann die Browser-Engine-Funktionen wie konfigurieren , ob die Anwendung JS oder Display Image usw. ausführen möchte…
Ich glaube, Sie müssen auf bestimmte Eigenschaften prüfen, ob Flash vom Browser unterstützt wird oder ob der Browser ein Bild anzeigt oder nicht, oder ob Sie möglicherweise die Bildschirmgröße überprüfen möchten.
quelle