¿Cómo detectar si un navegador es Chrome usando jQuery?

Tengo un problema con una función que se ejecuta en Chrome y que funciona correctamente en Safari, ambos navegadores webkit …

Necesito personalizar una variable en una función para Chrome, pero no para Safari.

Tristemente, he estado usando esto para detectar si es un navegador webkit:

if ($.browser.webkit) { 

Pero necesito detectar:

 if ($.browser.chrome) { 

¿Hay alguna manera de escribir una statement similar (una versión de trabajo de la anterior)?

 $.browser.chrome = /chrom(e|ium)/.test(navigator.userAgent.toLowerCase()); if($.browser.chrome){ ............ } 

ACTUALIZACIÓN: (10x a @Mr. Bacciagalupe)

jQuery ha eliminado $.browser de 1.9 y su último lanzamiento.

Pero aún puedes usar $ .browser como un complemento independiente, que se encuentra aquí

 if(/chrom(e|ium)/.test(navigator.userAgent.toLowerCase())){ alert('I am chrome'); } 

El usuario Endless tiene razón,

 $.browser.chrome = (typeof window.chrome === "object"); 

el código es mejor para detectar el navegador Chrome usando jQuery.

Si usa IE y agregó GoogleFrame como complemento, entonces

 var is_chrome = /chrome/.test( navigator.userAgent.toLowerCase() ); 

el código tratará como navegador Chrome porque el complemento GoogleFrame modifica la propiedad del navegador y agrega chromeframe dentro de él.

Esta pregunta ya fue discutida aquí: JavaScript: ¿Cómo saber si el navegador del usuario es Chrome?

Por favor intente esto:

 var isChromium = window.chrome; if(isChromium){ // is Google chrome } else { // not Google chrome } 

Pero una respuesta más completa y precisa sería esta ya que IE11, IE Edge y Opera también volverán a ser true para window.chrome

Entonces usa el siguiente:

 // please note, // that IE11 now returns undefined again for window.chrome // and new Opera 30 outputs true for window.chrome // and new IE Edge outputs to true now for window.chrome // so use the below updated condition var isChromium = window.chrome, vendorName = window.navigator.vendor, isOpera = window.navigator.userAgent.indexOf("OPR") > -1, isIEedge = window.navigator.userAgent.indexOf("Edge") > -1; if(isChromium !== null && isChromium !== undefined && vendorName === "Google Inc." && isOpera == false && isIEedge == false) { // is Google chrome } else { // not Google chrome } 

Las publicaciones anteriores aconsejan usar jQuery.browser. Pero la API jQuery recomienda no usar este método … (ver DOCS en API ). Y afirma que su funcionalidad se puede mover a un complemento compatible con el equipo en una versión futura de jQuery.

La API jQuery recomienda usar jQuery.support .

La razón es que ‘jQuery.browser’ usa el agente de usuario que puede ser falso y está desaprobado en versiones posteriores de jQuery. Si realmente desea usar $ .browser … Aquí está el enlace al plugin jQuery independiente, ya que se ha eliminado de la versión 1.9.1 de jQuery. https://github.com/gabceb/jquery-browser-plugin

Es mejor usar la detección de objeto de función en lugar de la detección de navegador.

Además, si usa el inspector de Google Chrome y va a la pestaña de la consola. Escriba ‘ventana’ y presione enter. Luego podrá ver las propiedades DOM para el ‘objeto ventana’. Cuando colapsas el objeto, puedes ver todas las propiedades, incluida la propiedad ‘chrome’.

Espero que esto ayude, aunque la pregunta era cómo hacerlo con jQuery. ¡Pero a veces el javascript directo es más simple!

userAgent puede ser cambiado. para más robusto, use la variable global especificada por chrome

 $.browser.chrome = (typeof window.chrome === "object"); 
 var is_chrome = /chrome/.test( navigator.userAgent.toLowerCase() ); 

Aunque no es Jquery, utilizo jquery pero para la detección del navegador he usado el script en esta página algunas veces. Detecta todos los navegadores principales, y más . El trabajo está prácticamente hecho para ti.

Tristemente debido a la última actualización de Opera !!window.chrome (y otras pruebas en el objeto de la ventana) cuando la prueba en Opera devuelve verdadero.

Conditionizr se encarga de esto y soluciona el problema de Opera:

 conditionizr.add('chrome', [], function () { return !!window.chrome && !/opera|opr/i.test(navigator.userAgent); }); 

Sugeriría usarlo ya que ninguno de los anteriores ahora es válido.

Esto le permite hacer:

 if (conditionizr.chrome) {...} 

Conditionizr se ocupa de otros detectores del navegador y es mucho más rápido y confiable que los jQuery.

Como una adición rápida, y estoy sorprendido de que nadie haya pensado en esto, podría usar el operador in :

 "chrome" in window 

Obviamente, esto no está utilizando JQuery, pero pensé que lo pondría, ya que es útil para los momentos en que no está utilizando ninguna biblioteca externa.

Cuando pruebo la respuesta @IE, siempre tengo “verdad”. La mejor manera es esta que también funciona @IE:

 var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor); 

Como se describe en esta respuesta: https://stackoverflow.com/a/4565120/1201725