Pregunta

Como dice el título, me interesaría encontrar un seguro basado en las características (es decir, sin usar el navegador.nombre de aplicación o el navegador.appVersion) forma de detectar el Google Chrome.

Por la característica basada me refiero, por ejemplo:

if(window.ActiveXObject) {
    // internet explorer!
}

Editar: Como se ha señalado, la pregunta no tiene mucho sentido (obviamente si se desea implementar una función, es la prueba para él, si se quiere detectar para un navegador específico, compruebe el agente de usuario), lo siento, es las 5 de la mañana ;) me dejó a mí la frase de esta manera:Hay objetos de javascript y/o características que son únicas para Chrome...

¿Fue útil?

Solución

isChrome = function() {
    return Boolean(window.chrome);
}

Otros consejos

Esta respuesta es muy anticuado, pero fue muy relevante en ese entonces, en la edad de piedra.

Creo que la característica de detectar es más útil que el navigator.userAgent de análisis, como ya he buscado en google Opera ambiguosity aquí.Nadie puede saber si IE16 analizará el /MSIE 16.0;/ regexp - pero podemos estar bastante seguros, no será el documento.todo el apoyo.En la vida real, las características son generalmente de sinónimos para los navegadores, como: "No XMLHttpRequest?Es la f....d IE6!" No nonIE navegador soporta el documento.todos, pero algunos navegadores como Maxthon puede mezclar el userAgent.(Por supuesto, la secuencia de comandos puede definir el documento.todos en Firefox, por alguna razón, pero es facilmente controlable.) Por lo tanto sugiero esta solución.

Editar Aquí He encontrado completa de los recursos.

Edit 2 He probado ese documento.todos también es apoyado por la Ópera!

var is = {
  ff: window.globalStorage,
  ie: document.all && !window.opera,
  ie6: !window.XMLHttpRequest,
  ie7: document.all && window.XMLHttpRequest && !XDomainRequest && !window.opera,
  ie8: document.documentMode==8,
  opera: Boolean(window.opera),
  chrome: Boolean(window.chrome),
  safari: window.getComputedStyle && !window.globalStorage && !window.opera
}

El uso es simple:

if(is.ie6) { ... }

No es exactamente una respuesta a la pregunta...pero si usted está tratando de detectar un navegador específico de la marca, el punto de la función de comprobación del tipo de pérdida.Dudo mucho que cualquier otro navegador está usando el Chrome cadena userAgent, así que si tu pregunta es "es este navegador Chrome', sólo debe mirar a eso.(Por cierto, la ventana.ActiveXObject no garantiza es decir, hay plugins para otros navegadores que ofrecen este objeto.Que tipo de ilustra el punto que estaba tratando de hacer.)

Para todas las normas nazis...a veces, usted podría querer usar sangrado "tecnologías estándar", que no son aún estándar, pero van a ser...Como características de css3.

Cual es la razón por la que he encontrado esta página.

Por alguna razón, Safari ejecuta un combo de border-radius con box-shadow bien, pero chrome no representar la combinación correcta.Así que sería bueno encontrar una manera para detectar chrome aunque es webkit para desactivar la combinación.

He ejecutado en cientos de razones para detectar un navegador/versión, que por lo general termina en el desguace de una idea para una característica interesante porque lo que yo quiero hacer no es compatible con la gran mal...

Pero a veces, algunas características son demasiado fría para no usarlos, incluso si no son normalizado todavía.

Por lo tanto, si usted acepta Marijn del punto y son interesados en probar la cadena de agente de usuario a través de javascript:

var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;

(Crédito: http://davidwalsh.name/detecting-google-chrome-javascript )


He aquí una muy agradable análisis y el desglose de los cromos cadena de agente de usuario: http://www.simonwhatley.co.uk/whats-in-google-chromes-user-agent-string

A menudo me conducta de uso de capacidad de detección.Comprobar directamente si el navegador soporta la funcionalidad antes de trabajar alrededor de ella, en lugar de trabajar se basa en lo que podría ser el nombre del navegador (agente de usuario).

Un problema con el navegador específico de soluciones, es que no se sabe si el error ha sido corregido o si la función no se admite ahora.Al hacer la detección de las capacidades, que saber el navegador o no por el apoyo directamente, y no sólo estar navegador-ist.

http://diveintohtml5.ep.io/everything.html

No debería ser la detección de Chrome específicamente.Si cualquier cosa, usted debe ser la detección de WebKit, desde tan lejos como la creación de páginas se refiere, Chrome debe comportarse exactamente igual que otros navegadores WebKit (Safari, Epifanía).

Si usted necesita no sólo para detectar WebKit, pero también averiguar exactamente qué versión está siendo utilizado, consulte este enlace: http://trac.webkit.org/wiki/DetectingWebKit

Pero, de nuevo, como otras personas se dijo anteriormente, no se debe detectar navegadores, debe detectar características.Ver este ADC artículo para más información sobre esto: http://developer.apple.com/internet/webcontent/objectdetection.html

Una de las razones que usted puede ser que necesite saber que el navegador es Chrome, ya que 'es' tan maldito que cumple con los estándares.Ya he tenido problemas con el viejo código JavaScript que pensé fue que cumple con los estándares (por FF o la Ópera de normas que son bastante buenos), pero Chrome fue aún más exigente.Me obligó a reescribir el código, pero a veces podría ser más fácil utilizar la si(isChrome) { bla...bla ) truco para ponerlo en marcha.Chrome parece que funciona muy bien (yo estoy para el cumplimiento de la norma), pero a veces usted sólo necesita saber lo que el usuario está ejecutando en la tumba de detalle.

También, Chrome es muy rápido.El problema es, algo de código JavaScript involuntariamente depende de la lentitud de otros navegadores para que funcione correctamente, es decir:la carga de la página, iframe de carga, colocación de la hoja de estilos vínculos y enlaces javascript en la página de cabeza, etc.Estos pueden causar nuevos problemas cuando las funciones están realmente disponibles para interactuar con los elementos de la página.Así que por ahora, usted realmente necesita saber...

Puedo usar este código para hacer marcadores para cada navegador (o mostrar un mensaje de webkit)

if (window.sidebar) { 
// Mozilla Firefox Bookmark
window.sidebar.addPanel(title, url,"");
} else if( window.external ) { // IE Favorite
  if(window.ActiveXObject) {
  //ie
  window.external.AddFavorite( url, title);
  } else {
  //chrome
  alert('Press ctrl+D to bookmark (Command+D for macs) after you click Ok');
  }
} else if(window.opera && window.print) { 
// Opera
  return true; }
 else { //safri
 alert('Press ctrl+D to bookmark (Command+D for macs) after you click Ok'); }

Puede haber falsos positivos ya que opera también tiene window.chrome objeto.Como una buena solución que yo uso;

var isOpera = !!window.opera || !!window.opr;// Opera 8.0+

var isChrome = !!window.chrome && !isOpera;

Esta solución casi siempre funciona.Sin embargo, una cosa que he descubierto es que, isChrome devuelve false en el iPad Chrome versión 52.0 como window.chrome devuelve false.

isIE:!!(!de la ventana.addEventListener && ventana.ActiveXObject),

isIE6:typeof document.createElement('DIV').de estilo.maxHeight == "undefined",

isIE7:!!(!de la ventana.addEventListener && ventana.XMLHttpRequest && !documento.querySelectorAll),

isIE8:!!(!de la ventana.addEventListener && document.querySelectorAll && document.documentMode == 8),

isGecko:navigator.producto == 'Gecko',

isOpera:!!de la ventana.la ópera,

isChrome:!!de la ventana.chrome,

isWebkit:!!(!de la ventana.opera && !navigator.taintEnable && document.evaluar && navegador.producto != 'Gecko'),

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top