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.
var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
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.
var is_chrome = ((navigator.userAgent.toLowerCase().indexOf('chrome') > -1) &&(navigator.vendor.toLowerCase().indexOf("google") > -1));
Google Inc
a navigator.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 mejor
Para verificar si el navegador es Google Chrome , intente esto:
// please note,
// that IE11 now returns undefined again for window.chrome
// and new Opera 30 outputs true for window.chrome
// but needs to check if window.opr is not undefined
// and new IE Edge outputs to true now for window.chrome
// and if not iOS Chrome check
// so use the below updated condition
var isChromium = window.chrome;
var winNav = window.navigator;
var vendorName = winNav.vendor;
var isOpera = typeof window.opr !== "undefined";
var isIEedge = winNav.userAgent.indexOf("Edge") > -1;
var isIOSChrome = winNav.userAgent.match("CriOS");
if (isIOSChrome) {
// is Google Chrome on IOS
} else if(
isChromium !== null &&
typeof isChromium !== "undefined" &&
vendorName === "Google Inc." &&
isOpera === false &&
isIEedge === false
) {
// is Google Chrome
} else {
// not Google Chrome
}
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 volver undefined
, ahora vuelve true
. Pero adivina qué, IE11 ahora vuelve indefinido nuevamente. IE11 también devuelve una cadena vacía ""
para window.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 que window.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 nuevo undefined
ya que IE11 ahora sale undefined
, como lo hizo cuando se lanzó por primera vez ... luego, después de algunas compilaciones de actualización, salió a true
... 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én window.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
para window.chrome
... aunque IE11 genera undefined
para window.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 salida true
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 es undefined
ya que ahora Chrome 66 tiene OPR
en window.navigator.vendor
. ¡Gracias a Frosty Z y Daniel Wallman por informar esto!
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 );
true
en Microsoft Edge.
Una solución mucho más simple es simplemente usar:
var isChrome = !!window.chrome;
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).
true
a window.chrome
. Echa un vistazo a conditionizr.com, que tiene una detección y reparación a prueba de balas.
!!
convierte el valor en true
o false
. typeof(window.chrome)
da "object"
, mientras que typeof(!!window.chrome)
da "boolean"
. Su ejemplo de código también funciona porque la if
declaración hace la conversión.
true
para Edge.
console.log(JSON.stringify({
isAndroid: /Android/.test(navigator.userAgent),
isCordova: !!window.cordova,
isEdge: /Edge/.test(navigator.userAgent),
isFirefox: /Firefox/.test(navigator.userAgent),
isChrome: /Google Inc/.test(navigator.vendor),
isChromeIOS: /CriOS/.test(navigator.userAgent),
isChromiumBased: !!window.chrome && !/Edge/.test(navigator.userAgent),
isIE: /Trident/.test(navigator.userAgent),
isIOS: /(iPhone|iPad|iPod)/.test(navigator.platform),
isOpera: /OPR/.test(navigator.userAgent),
isSafari: /Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent),
isTouchScreen: ('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch,
isWebComponentsSupported: 'registerElement' in document && 'import' in document.createElement('link') && 'content' in document.createElement('template')
}, null, ' '));
var is_chrome = /chrome/.test( navigator.userAgent.toLowerCase() );
true
en Microsoft Edge.
También es posible que desee la versión específica de Chrome:
var ua = navigator.userAgent;
if(/chrome/i.test(ua)) {
var uaArray = ua.split(' ')
, version = uaArray[uaArray.length - 2].substr(7);
}
Disculpas a The Big Lebowski por usar su respuesta dentro de la mía.
"537.36"
en Microsoft Edge.
Puedes usar:
navigator.userAgent.indexOf("Chrome") != -1
Está trabajando en v.71
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.
var isChrome = false;
if (window.chrome && !window.opr){
isChrome = true;
}
console.log(isChrome);
const isChrome = window.chrome && !window.opr;
El usuario puede cambiar el agente de usuario. Intente probar la webkit
propiedad prefijada en el style
objeto del body
elemento
if ("webkitAppearance" in document.body.style) {
// do stuff
}
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);
Conocer los nombres de los diferentes navegadores de escritorio (Firefox, IE, Opera, Edge, Chrome). Excepto Safari.
function getBrowserName() {
var browserName = '';
var userAgent = navigator.userAgent;
(typeof InstallTrigger !== 'undefined') && (browserName = 'Firefox');
( /* @cc_on!@*/ false || !!document.documentMode) && (browserName = 'IE');
(!!window.chrome && userAgent.match(/OPR/)) && (browserName = 'Opera');
(!!window.chrome && userAgent.match(/Edge/)) && (browserName = 'Edge');
(!!window.chrome && !userAgent.match(/(OPR|Edge)/)) && (browserName = 'Chrome');
/**
* Expected returns
* Firefox, Opera, Edge, Chrome
*/
return browserName;
}
Funciona en las siguientes versiones de navegador:
Opera - 58.0.3135.79
Firefox - 65.0.2 (64-bit)
IE - 11.413.15063 (JS Fiddle no longer supports IE just paste in Console)
Edge - 44.17763.1.0
Chrome - 72.0.3626.121 (Official Build) (64-bit)
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
Todas las respuestas son incorrectas. "Opera" y "Chrome" son iguales en todos los casos.
(parte editada)
aquí está la respuesta correcta
if (window.chrome && window.chrome.webstore) {
// this is Chrome
}
window.chrome.webstore
ahora esundefined