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 .

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.

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:

Diferencias entre nativo y Chrome

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 
  • ¿Cómo puedo encontrar la ventana virtual / ancho de pantalla con Javascript?
  • Acceso denegado utilizando almacenamiento local en Android WebView
  • Depuración de javascript en tablets / teléfonos Android?
  • Capturar evento clave para retroceso
  • Console.log no funciona en el emulador de Android 2.1
  • Acceso a la interfaz de usuario de JavaScript en Android
  • Desarrollo web de Android ... El ancho de Div (texto interior más probable) está cambiando en píxeles en función del zoom del dispositivo
  • Configurar la cámara y la altura de la cámara
  • Plataforma de desarrollo móvil Titanium
  • Comportamiento extraño de la aplicación híbrida basada en CrossWalk al reproducir audio web de m4a
  • Ejecución de la ecuación matemática en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.