Sembra che jQuery.browser sia in grado di identificare facilmente il webkit a partire da 1.4. Ma come posso usarlo per distinguere Chrome da Safari (e viceversa)?Distinguere Chrome da Safari utilizzando jQuery.browser
risposta
Dal Sarfraz non ha corretto la sua risposta (grazie Sarfraz per avermi nella giusta direzione), mi post funzionante il codice qui .
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;
}
Si può fare come:
// 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 non è definito. e $ .browser.safari è vero sia per chrome che per safari –
@sAc, eri vicino, questo dovrebbe apparire prima del codice che hai fornito: 'var userAgent = navigator.userAgent.toLowerCase(); $ .browser.chrome = /chrome/.test (navigator.userAgent.toLowerCase()); var version = 0; ' – kingjeffrey
@sAc, inoltre, la variabile' version' non è necessaria e dovrebbe essere sostituita con '$ .browser.version'. – kingjeffrey
/Chrome/.test(navigator.userAgent)
Senza 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
(A seguito non funziona con jQuery 1.9 e soprattutto come jQuery.browser
è stata rimossa dal jQuery. Vedi http://api.jquery.com/jQuery.browser/)
$.browser.chrome = $.browser.webkit && !!window.chrome;
$.browser.safari = $.browser.webkit && !window.chrome;
La prima soluzione è molto elegante. – NullVoxPopuli
Perché !! per chrome cosa significa? – Carlos
'$ .browser.webkit &&! Window.chrome' risulta vero in Firefox ... –
window.chrome?$.browser.chrome=!0:($.browser.webkit&&($.browser.safari=!0),$.browser.chrome=!1);
Questa patch aggiunge $ .browser.chrome e anche escludere il rilevamento Goolge Chrome da $ .browser.safari
anche per gli utenti non-JQuery:
navigator.userAgent.indexOf('WebKit') + 1 ?
((navigator.vendor || '').indexOf('Apple') + 1 ? /* Safari */ : /* Chrome */)
: /* not Webkit */
Questo ha fatto il trucco per me. È un po 'un trucco da leggere se non si è abituati a questo tipo di affermazione condizionale, ma l'hai spiegato abbastanza bene. Grazie mille. –
Puoi provare a utilizzare anche questo approccio, per me va bene.
isSafari: function()
{
var isSafari = (navigator.userAgent.indexOf('Safari') != -1
&& navigator.userAgent.indexOf('Chrome') == -1)
console.log('IsSafari : ' + isSafari);
return isSafari;
},
- 1. jQuery.browser: Javascript Uncaught TypeError
- 2. carattere Jagged su Windows - Chrome e Safari
- 3. MouseOver Problema di MouseOut in Safari/Chrome
- 4. top.location.replace crea la cronologia in Safari/Chrome
- 5. Disabilita cache applicazioni in Chrome e Safari
- 6. Gradiente lineare nei browser Chrome e Safari
- 7. Disabilita lo scorrimento elastico Chrome/Safari
- 8. jquery .width() chrome e safari problem
- 9. Messa a fuoco ContentEditable in Chrome/Safari
- 10. css problema Hover in Chrome e Safari
- 11. ridimensionamento iframe con scorrimento in chrome/safari
- 12. Forza HTTP/2 con Chrome o Safari
- 13. CSP nonce ignorato da Safari
- 14. Regola CSS Modernizr ignorata da Safari (Mobile Safari pure)
- 15. utilizzando jQuery in Safari Extension
- 16. SSML utilizzando Chrome TTS
- 17. Distinguere eval locale da eval globale
- 18. Distinguere Mifare Ultralight da Mifare Ultralight C
- 19. Javascript funziona in Safari ma non Chrome o Firefox
- 20. Funzione JQuery attiva in safari ma non in chrome
- 21. Display: blocco non funzionante in Chrome o Safari
- 22. location.hash ha effetto solo una volta in chrome e safari
- 23. jQuery .append() non funziona in IE, Safari e Chrome
- 24. -webkit-linear-gradient causa banding in Chrome/Safari
- 25. Avvia safari da un'applicazione Mac
- 26. Screenshot Safari da Share Extension
- 27. Conversione da HTML a PDF utilizzando Chrome pdfium
- 28. Doppia spaziatura bordi con thead in Chrome e Safari
- 29. Modifica completa del foglio di stile in Chrome o Safari
- 30. Safari e Chrome ignorano la correttezza della min-width CSS
Per safari, $ .browser.version finisce per darti la versione di webkit, non la versione di safari. Prova invece userAgent.indexOf ('Versione /') + 8. – David
Inoltre, è possibile eseguire la sottostringa fino a un carattere di spazio anziché un punto sulle righe che dice 'userAgent = userAgent.substring (0, userAgent.indexOf ('.'));' Per ottenere i numeri di versione completi anziché solo il primo parte del numero di versione (il numero principale). – mkmurray
@David, dovresti fare il 'v' minuscolo nella stringa' 'Version/'', come prima nel codice la stringa dell'agent user era in minuscolo. – mkmurray