Distinguir Android Chrome del navegador de valores. El agente de usuario del navegador de archivos contiene "Chrome"
Necesito saber qué navegador utilizan los usuarios para mi sitio web. (Editar: Los usuarios necesitan agregar un bookmarklet, que no es posible en el navegador estándar de Internet. Necesito saber qué mensaje mostrarles.)
EDIT: No necesito ser capaz de detectar ningún tipo de navegador. En concreto, necesito, en este caso, poder detectar si un navegador es realmente un navegador Google Chrome .
- WebView oculta el teclado virtual durante loadUrl (), lo que significa que un teclado no puede permanecer abierto mientras llama a javascript
- Objeto vacío de la interfaz Javascript de Android en la vista web
- ¿Se ejecuta JavaScript cuando la aplicación está en segundo plano?
- ViewPagerAndroid devuelve la vista vacía cuando se agregan nuevos datos de origen
- Cordova autenticación de huellas dactilares en el servidor
Para al menos un dispositivo inteligente, estoy teniendo problemas para decir la diferencia entre el navegador de Internet y Chrome; Ambos contienen la palabra "Chrome".
Samsung galaxia s5:
Agente de usuario de navegador de almacén:
Mozilla / 5.0 (Linux, Android 4.4.2, SAMSUNG-SM-G900A Build / KOT49H) AppleWebKit / 537.36 (KHTML, como Gecko) Versión / 1.6 Chrome / 28.0.1500.94 Mobile Safari / 537.36
Agente de usuario de Chrome:
Mozilla / 5.0 (Linux, Android 4.4.2, SAMSUNG-SM-G900A Build / KOT49H) AppleWebKit / 537.36 (KHTML, como Gecko) Chrome / 36.0.1985.128 Mobile Safari / 537.36
"Version / Xx" es diferente, pero ¿será siempre así?
Edit: Ya he comprobado las respuestas anteriores como se sugiere en los comentarios. Asumen que el navegador no Chrome no contiene la palabra Chrome.
- Un botón - 3 tiendas de aplicaciones - ¿cómo redirigir al usuario a la appstore adecuada?
- Abrir enlace desde Webview de Android en el navegador normal como popup
- ¿Cómo abrir Twitter y Facebook con Phonegap?
- Reaccionar nativo: seleccionable vista de lista de sección da error
- ¿Cómo utilizar el archivo de tipo de entrada en el teléfono?
- `Preload.js` no ha podido cargar algunos archivos en dispositivos Android
- Pinch Ampliar la vista web
- Deshabilitar programaticamente la aceleración de hardware en el navegador
Así que la diferencia es esto en el agente de usuario:
Versión / XX
Desde https://developer.chrome.com/multidevice/user-agent#webview_user_agent :
"Si está intentando diferenciar entre WebView y Chrome para Android, debe buscar la presencia de la cadena Version / XX en la cadena de agente de usuario de WebView."
Supongo que un navegador web de Chrome todavía puede optar por dejar ese poco, pero si lo tiene, entonces al menos sé que no es cierto Google Chrome!
Por favor, consulte este enlace: https://developer.chrome.com/multidevice/user-agent En el último párrafo encontramos:
Si está intentando diferenciar entre WebView y Chrome para Android, debe buscar la presencia de la cadena Version / XX en la cadena de agente de usuario de WebView.
Puesto que no soy consciente de ninguna característica flagrante diferencias entre el navegador de valores y cromo, jugando "mancha la diferencia" con la cadena de agente de usuario revela que la versión de Chrome declaró en el navegador de valores es muy pocas versiones de nuevo.
Aunque no es la mejor diferencia y el navegador de valores siempre se puede actualizar, al menos en este momento, esto puede funcionar bien para usted.
… usted no ha dicho realmente cómo usted utilizará esto.
(No puedo comentar, así que escribo una respuesta en su lugar.)
User984003 Así que, si te entiendo bien (de tu comentario), quieres esencialmente una prueba para distinguir, en dispositivos móviles, entre navegadores de valores y un navegador instalado por el usuario. ¿Quieres esto porque hay una diferencia entre ellos en la disponibilidad de, respectivamente, el permiso para instalar bookmarklets, derecho?
A continuación, este tema se discute en este hilo: Cómo detectar el navegador de acciones Android (La respuesta corta e insatisfactoria en este hilo fue: "No hay una forma fiable y universal para detectar sólo los navegadores de valores".)
Además, aquí algunas informaciones sobre las maneras de instalar bookmarklets en android: http://smallbusiness.chron.com/making-bookmarklets-work-android-50685.html (Tal vez aquí hay algunas alternativas que no son conscientes de, lo que hace que los intentos de Distinguir las versiones del navegador obsoletas.)
Leer un montón de cosas, y parece que todos no hacen mucho y sigue siendo un problema para ver la diferencia. Busqué la red, ninguna solución.
Fui a comprobar esto por mi cuenta, y encontré esto:
Así que descubrí que el navegador nativo (en Samsung S4) añadió SamsungBrowser después de "Gecko").
En Chrome, su "como Gecko) Chrome".
Así que inmediatamente después de "Gecko"), es "Chrome".
Tal vez eso podría hacer el truco ya que Samsung añade su propia cadena en el agente de usuario.
¿Es posible que otros dispositivos puedan causar de nuevo problemas?
Puede usar JavaScript, por ejemplo
var chromeVersion = /^Google/.test(navigator.vendor) && !/ OPR/.test(navigator.userAgent) && /Chrome\/([0-9]+|$)/.exec(navigator.userAgent)[1]; var isChromeWebview = chromeVersion >= 30 && !('chrome' in window);
window.chrome
se define en Chrome Browser (por lo menos en Chrome 10), pero no está definido en Chrome WebView (Chrome se utilizó por primera vez para WebView en Android 4.4.x, AOSP se utilizó para WebView para Android 4.3 o menos) .
Yo personalmente no usaría esa prueba en producción (no será confiable para diferentes navegadores y versiones), pero hace lo que quieres si lo usas para un propósito que no es crítico.
Recomiendo algo como esto:
function testForAndroidChrome() { var version = navigator.appVersion; if (version.indexOf('(KHTML, like Gecko) Chrome' != -1) { return true; // it's Chrome } else { return false; // it's the stock browser } } var myTest = testForAndroidChrome(); // returns true or false
- PhoneGap Desactivar la rotación de la pantalla en una sola página?
- ¿Cómo hacer que los elementos se puedan hacer clic en la vista de lista?