Parece que jQuery.browser es capaz de identificar webkit con bastante facilidad a partir de 1.4. ¿Pero cómo puedo usarlo para distinguir Chrome de Safari (y viceversa)?Distinga Chrome de Safari utilizando jQuery.browser
Respuesta
Desde Sarfraz no ha corregido su respuesta (gracias Sarfraz para mí apuntando en la dirección correcta), voy a publicar funcionamiento código aquí .
var userAgent = navigator.userAgent.toLowerCase();
$.browser.chrome = /chrome/.test(navigator.userAgent.toLowerCase());
// Is this a version of Chrome?
if($.browser.chrome){
userAgent = userAgent.substring(userAgent.indexOf('chrome/') +7);
userAgent = userAgent.substring(0,userAgent.indexOf('.'));
$.browser.version = userAgent;
// If it is chrome then jQuery thinks it's safari so we have to tell it it isn't
$.browser.safari = false;
}
// Is this a version of Safari?
if($.browser.safari){
userAgent = userAgent.substring(userAgent.indexOf('version/') +8);
userAgent = userAgent.substring(0,userAgent.indexOf('.'));
$.browser.version = userAgent;
}
Puede hacer como:
// Is this a version of Chrome?
if($.browser.chrome){
userAgent = userAgent.substring(userAgent.indexOf('chrome/') +7);
userAgent = userAgent.substring(0,userAgent.indexOf('.'));
version = userAgent;
// If it is chrome then jQuery thinks it's safari so we have to tell it it isn't
$.browser.safari = false;
}
// Is this a version of Safari?
if($.browser.safari){
userAgent = userAgent.substring(userAgent.indexOf('safari/') +7);
userAgent = userAgent.substring(0,userAgent.indexOf('.'));
version = userAgent;
}
uhm - $ .browser.chrome no está definido. y $ .browser.safari es verdadero para chrome y safari –
@sAc, usted estuvo cerca, esto debería aparecer antes del código que proporcionó: 'var userAgent = navigator.userAgent.toLowerCase(); $ .browser.chrome = /chrome/.test (navigator.userAgent.toLowerCase()); var version = 0; ' – kingjeffrey
@sAc, también, la variable' version' no es necesaria, y debería reemplazarse por '$ .browser.version'. – kingjeffrey
/Chrome/.test(navigator.userAgent)
Sin jQuery
isChrome = function() {
return /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
}
isSafari = function() {
return /Safari/.test(navigator.userAgent) && /Apple Computer/.test(navigator.vendor);
}
Con jQuery
(siguiente no funcionará con jQuery 1,9 y por encima de como jQuery.browser
ha sido retirado de jQuery. Ver http://api.jquery.com/jQuery.browser/)
$.browser.chrome = $.browser.webkit && !!window.chrome;
$.browser.safari = $.browser.webkit && !window.chrome;
primera solución es muy elegante. – NullVoxPopuli
¡¡Por qué !! para Chrome, ¿qué significa eso? – Carlos
'$ .browser.webkit &&! Window.chrome' resultados verdaderos en Firefox ... –
window.chrome?$.browser.chrome=!0:($.browser.webkit&&($.browser.safari=!0),$.browser.chrome=!1);
Este parche añade $ .browser.chrome y también excluye la detección Goolge Chrome $ .browser.safari
también para los usuarios no JQuery:
navigator.userAgent.indexOf('WebKit') + 1 ?
((navigator.vendor || '').indexOf('Apple') + 1 ? /* Safari */ : /* Chrome */)
: /* not Webkit */
Esto hizo el truco para mí. Es un truco para leer si no estás acostumbrado a este tipo de enunciado condicional, pero lo dijiste bastante bien. Gracias una tonelada. –
Puede intentar usar este enfoque también, funciona para mi.
isSafari: function()
{
var isSafari = (navigator.userAgent.indexOf('Safari') != -1
&& navigator.userAgent.indexOf('Chrome') == -1)
console.log('IsSafari : ' + isSafari);
return isSafari;
},
- 1. Chrome y Safari XSLT utilizando JavaScript
- 2. ContenidoEnfoque editable en Chrome/Safari
- 3. anclas Deshabilitar Chrome/Safari/WebKit
- 4. Rangos de selección en webkit (Safari/Chrome)
- 5. Chrome/Safari ignorando mis reglas de reinicio?
- 6. Detectando Chrome utilizando .NET 3.5 y C#
- 7. enfoque() no funciona en Safari o Chrome
- 8. safari y chrome javascript console multiline
- 9. formulario presentado dos veces en Chrome/Safari
- 10. onunload no funciona en Chrome y safari
- 11. Problema MouseOver MouseOut en Safari/Chrome
- 12. Copiar sin flash - Firefox, Chrome, Safari, Opera
- 13. fuente Jagged en Windows - Chrome y Safari
- 14. Atributo de póster de video HTML5 en Safari y Chrome
- 15. Deshabilitar el caché de aplicaciones en Chrome y Safari
- 16. css problema de la libración en Chrome y Safari
- 17. jQuery .append() no funciona en IE, Safari y Chrome
- 18. Javascript trabajando en Safari pero no en Chrome o Firefox
- 19. Chrome/Safari no llamar a descargar en algunos casos
- 20. "window.location.hash = location.hash" no funciona en Webkit (Safari y Chrome)
- 21. Pantalla: El bloque no funciona en Chrome o Safari
- 22. Desbordamiento: desorden oculto con márgenes en Chrome y Safari
- 23. typekit: Falló en Firefox, Funcionó en Chrome y Safari
- 24. Relleno adicional en Chrome/Safari/Webkit: ¿alguna idea?
- 25. Ver y establecer encabezados HTTP para Safari/Chrome
- 26. Gradiente lineal en los navegadores Chrome y Safari
- 27. Llamadas AJAX entre dominios en Safari y Chrome
- 28. He probado en Chrome, ¿necesito probar en Safari?
- 29. Cruz cookie de dominio utilizando CORS en Safari
- 30. ¿Qué son las diferencias de representación entre las últimas versiones de Safari (Windows) vs Safari (MAc) frente a Google Chrome (Mac) frente a Google Chrome (Windows)?
Para safari, $ .browser.version termina dándote la versión de webkit, no la versión de safari. Pruebe userAgent.indexOf ('Version /') + 8 en su lugar. – David
Además, puede subsergir hasta un carácter de espacio en lugar de punto en las líneas que dicen 'userAgent = userAgent.substring (0, userAgent.indexOf ('.'));' Para obtener números de versión completos en lugar de solo los primeros parte del número de versión (el número principal). – mkmurray
@David, necesitarías hacer 'v' en minúscula en tu cadena' 'Version /' ', como antes en el código la cadena del agente de usuario estaba en minúscula. – mkmurray