Necesito alguna función que devuelva un valor booleano para verificar si el navegador es Chrome .
¿Cómo creo tal funcionalidad?
Necesito alguna función que devuelva un valor booleano para verificar si el navegador es Chrome .
¿Cómo creo tal funcionalidad?
Respuestas:
Actualización: consulte la respuesta de Jonathan para obtener una forma actualizada de manejar esto. La respuesta a continuación aún puede funcionar, pero probablemente podría desencadenar algunos falsos positivos en otros navegadores.
Sin embargo, como se mencionó, los Agentes de usuarios pueden ser falsificados, por lo que siempre es mejor usar la detección de funciones (por ejemplo, Modernizador ) al manejar estos problemas, como mencionan otras respuestas.
fuente
var is_chrome = ((navigator.userAgent.toLowerCase().indexOf('chrome') > -1) &&(navigator.vendor.toLowerCase().indexOf("google") > -1));
Google Inc
anavigator.vendor
, por lo que este método no es a prueba de balas, algo así como/Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor) && !/OPR/.test(navigator.userAgent)
probablemente funcione mejorPara verificar si el navegador es Google Chrome , intente esto:
Ejemplo de uso: http://codepen.io/jonathan/pen/WpQELR
La razón por la que esto funciona es porque si usas el inspector de Google Chrome y vas a la pestaña de la consola. Escriba 'ventana' y presione Entrar. Luego podrá ver las propiedades DOM para el 'objeto de ventana'. Cuando contrae el objeto, puede ver todas las propiedades, incluida la propiedad 'chrome'.
Ya no puede usar estrictamente igual verdadero para verificar IE
window.chrome
. IE solía volverundefined
, ahora vuelvetrue
. Pero adivina qué, IE11 ahora vuelve indefinido nuevamente. IE11 también devuelve una cadena vacía""
parawindow.navigator.vendor
.¡Espero que esto ayude!
ACTUALIZAR:
Gracias a Halcyon991 por señalar a continuación, que el nuevo Opera 18+ también resulta verdadero
window.chrome
. Parece que Opera 18 se basa en Chromium 31 . Así que agregué un cheque para asegurarme de quewindow.navigator.vendor
es:"Google Inc"
y no es"Opera Software ASA"
. También gracias a Ring y Adrien Be por el aviso de que Chrome 33 ya no es verdad ...window.chrome
ahora comprueba si no es nulo. Pero preste mucha atención a IE11, agregué la verificación de nuevoundefined
ya que IE11 ahora saleundefined
, como lo hizo cuando se lanzó por primera vez ... luego, después de algunas compilaciones de actualización, salió atrue
... ahora la compilación de actualización reciente estáundefined
volviendo a salir . ¡Microsoft no puede decidirse!ACTUALIZAR 24/07/2015 - adición para Opera Check
Opera 30 acaba de ser lanzado. Ya no sale
window.opera
. Y tambiénwindow.chrome
sale a verdadero en el nuevo Opera 30. Por lo tanto, debe verificar si OPR está en el UserAgent . Actualicé mi condición anterior para tener en cuenta este nuevo cambio en Opera 30, ya que utiliza el mismo motor de renderizado que Google Chrome.ACTUALIZAR 13/10/2015 - adición para verificación IE
Comprobación adicional para IE Edge debido a que genera
true
parawindow.chrome
... aunque IE11 generaundefined
parawindow.chrome
. Gracias a artfulhacker por sobre esto!ACTUALIZAR 2/5/2016 - adición para iOS Chrome check
Comprobación agregada para la comprobación de Chrome de iOS
CriOS
debido a su salidatrue
para Chrome en iOS. Gracias a xinthose por sobre esto!ACTUALIZACIÓN 18/04/2018 - cambio para cheque Opera
Cheque editado para Opera, la comprobación
window.opr
no esundefined
ya que ahora Chrome 66 tieneOPR
enwindow.navigator.vendor
. ¡Gracias a Frosty Z y Daniel Wallman por informar esto!fuente
Mozilla/5.0 (Linux; Android 8.0.0; ASUS_Z012D Build/OPR1.170623.026) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.109 Mobile Safari/537.36
, por lo tanto,isChrome()
devuelve falso .window.opr
no lo estáundefined
.incluso más corto:
var is_chrome = /chrome/i.test( navigator.userAgent );
fuente
true
en Microsoft Edge.Una solución mucho más simple es simplemente usar:
El
!!
justo convierte el objeto en un valor booleano. En los navegadores que no sean Chrome, esta propiedad seráundefined
, lo que no es cierto.Tenga en cuenta que esto también es válido para las versiones de Edge que se basan en Chrome (gracias @Carrm por señalar esto).
fuente
true
awindow.chrome
. Echa un vistazo a conditionizr.com, que tiene una detección y reparación a prueba de balas.!!
convierte el valor entrue
ofalse
.typeof(window.chrome)
da"object"
, mientras quetypeof(!!window.chrome)
da"boolean"
. Su ejemplo de código también funciona porque laif
declaración hace la conversión.true
para Edge.fuente
fuente
true
en Microsoft Edge.También es posible que desee la versión específica de Chrome:
Disculpas a The Big Lebowski por usar su respuesta dentro de la mía.
fuente
"537.36"
en Microsoft Edge.Puedes usar:
Está trabajando en v.71
fuente
navigator.userAgent.includes("Chrome")
Funciona para mí en Chrome en Mac. Parece ser más simple o más confiable (en caso de que la cadena de UserAgent haya sido probada) que todas las anteriores.
fuente
const isChrome = window.chrome && !window.opr;
El usuario puede cambiar el agente de usuario. Intente probar la
webkit
propiedad prefijada en elstyle
objeto delbody
elementofuente
Mira esto: ¿Cómo detectar el navegador Safari, Chrome, IE, Firefox y Opera?
En su caso: var isChrome = !! window.chrome && (!! window.chrome.webstore || !! window.chrome.runtime);
fuente
Conocer los nombres de los diferentes navegadores de escritorio (Firefox, IE, Opera, Edge, Chrome). Excepto Safari.
Funciona en las siguientes versiones de navegador:
Vea la esencia aquí y el violín aquí
El fragmento de código original ya no funcionaba para Chrome y olvidé dónde lo encontré. Antes tenía un safari, pero ya no tengo acceso al safari, así que ya no puedo verificarlo.
Solo los códigos Firefox e IE eran parte del fragmento original.
La comprobación de Opera, Edge y Chrome es sencilla. Tienen diferencias en el UserAgent.
OPR
solo existe en Opera.Edge
solo existe en Edge. Entonces, para verificar Chrome, esta cadena no debería estar allí.En cuanto a Firefox e IE, no puedo explicar lo que hacen.
Agregaré esta funcionalidad a un paquete que estoy escribiendo
fuente
Todas las respuestas son incorrectas. "Opera" y "Chrome" son iguales en todos los casos.
(parte editada)
aquí está la respuesta correcta
fuente
window.chrome.webstore
ahora esundefined