¿Hay alguna forma de diferenciar a través de javascript si el sitio web se ejecuta dentro del ipad safari o dentro de una aplicación WebView?
javascript
ipad
ios
webview
césped
fuente
fuente
Respuestas:
Esto usa una combinación de
window.navigator.userAgent
ywindow.navigator.standalone
. Puede distinguir entre los cuatro estados relacionados con una aplicación web de iOS: safari (navegador), independiente (pantalla completa), uiwebview y no iOS.Demostración: http://jsfiddle.net/ThinkingStiff/6qrbn/
fuente
Safari
en userAgent. se comporta de manera diferente con respecto alwebcal://
protocolo requerido para archivos .icsAgentes de usuario
Ejecutando en UIWebView
Ejecutar en Safari en iPad
Ejecutar en Safari en Mac OS X
Ejecutando en Chrome en Mac OS X
Ejecutando en FireFox en Mac OS X
Código de detección
fuente
UIWebView
y Safari tienenSafari
en su agente de usuarioVersion
en lugar deSafari
trabajar para mí en el último iOS.Version
? ¿ReemplazaSafari
conVersion
en lavar is_uiwebview
línea?Creo que puedes usar el
User-Agent
.ACTUALIZAR
Página navegada con Safari de iPhone
Lo intentaré en un segundo con UIWebView
La diferencia es que el de Safari dice
Safari/6531.22.7
Solución
fuente
Safari/.....
a que falta el mismo en UIWebViewSi:
fuente
Probé todas estas soluciones pero no funcionó en mi caso,
iba a detectar Telegram dentro de Webview. Me di cuenta de que Safari está cambiando el texto del estilo del teléfono a un enlace con el prefijo "tel:", así que usé esto para escribir este código, puedes probarlo: jsfiddle
fuente
navigator.platform === 'MacIntel'
. Esto afecta especialmente a iPadOS 13 Mobile Safari porque usa el modo de escritorio de forma predeterminada.La solución de Neoneye ya no funciona (ver comentarios) y se puede simplificar. Por otro lado, probar solo "Safari" en la UA aborda mucho más que los dispositivos de mano ios.
Esta es la prueba que estoy usando:
fuente
Para la primavera de 2018, ninguno de los métodos propuestos funcionó para mí, así que se me ocurrió un nuevo enfoque (que no está basado en userAgent):
https://gist.github.com/BorisChumichev/7c0ea033daf33da73306a396ffa174d1
También puede ampliar el código para dispositivos iPad, creo que debería funcionar.
Funcionó bien para Telegram, Facebook, VK webviews.
fuente
Working 15.02.19
Otra solución para detectar vistas web en iOS es verificar el soporte / existencia de
navigator.mediaDevices
.En mi caso, no necesitaba capturar todas las vistas web, pero las que no admiten la entrada de cámara / micrófono (Recordatorio: las alertas no se activan en la vista web, así que asegúrese de cambiar algo en el dom para fines de depuración)
fuente
Sé que este código comprobará si se accede a él desde un icono añadido a la pantalla de inicio:
pero no estoy seguro de cómo reaccionaría en un UIWebView. La única otra solución que se me ocurre es obtener el agente de usuario o usar
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
y reemplazar la cadena de consulta de la página a la que está accediendo por algo que la página usa para identificar que se está accediendo desde una vista web.fuente
Sugeriría usar Modernizr y verificar indexeddb como este . Puede verificarlo con la configuración del agente de usuario (dispositivo, sistema operativo, navegador, etc.), pero la detección de funciones pura parece más recomendable.
fuente
La última vez que necesité esto (SOLO para propósitos de WebView), utilicé esta verificación:
fuente
Encontré una solución simple para detectar iPhone o iPad. Esto funciona bien para mí.
fuente
Prueba con IOS 13
fuente
No creo que haya nada específico que pueda usar en Javascript del lado del cliente, pero si tiene control sobre lo que puede hacer el UIWebView de origen, es posible que desee considerar jugar con la cadena de agente de usuario que genera y probarlo en su ¿Javascript del lado del cliente en su lugar? Es un truco, lo sé, pero bueno ... Esta pregunta puede dar algunos consejos sobre cómo modificar el agente de usuario:
Cambiar el agente de usuario en UIWebView (iPhone SDK)
fuente
@ Sod, bueno, no tengo la respuesta, pero no estoy convencido de por qué desea verificar, ya que el motor del navegador si su safari (navegador) o la aplicación será el mismo, solo su Webkit, sí, la aplicación puede configurar las capacidades del motor del navegador como , ya sea que la aplicación quiera ejecutar JS o Display Image, etc.
Creo que debe verificar cierta propiedad si Flash es compatible con el navegador o si el navegador muestra una imagen o no, o probablemente le gustaría verificar el tamaño de la pantalla,
fuente