2010-02-24 11 views
33
if(firefox and is on a computer){ 
alert('using firefox on a computer') 
}else{ 
alert("using something else!"); 
} 

Come posso fare questo?In Javascript, come posso determinare se il mio browser corrente è Firefox su un computer rispetto a tutto il resto?

+2

Che cosa significa "è su un computer significare"? Vuoi anche rilevare iphone e altri dispositivi mobili? –

+1

Perché vuoi saperlo? – Gumbo

+2

perché il q dice se firefox AND è su un computer? L'è su un computer deve essere importante altrimenti non sarebbe lì .. dopo tutto il suo ridondante altrimenti. –

risposta

51

quello che cercate è conosciuto come il rilevamento del browser:

if ($.browser.mozilla) { ... 

Tuttavia, lo sniffing del browser è scoraggiato, in quanto è facile falsificare l'agente utente, ovvero fingere di essere un altro browser!

fareste meglio a rilevamento caratteristica uso, sia nel proprio modo, o attraverso l'interfaccia jQuery.support: http://api.jquery.com/jQuery.support/

Ecco un articolo su come allungarlo per uso personale: http://www.waytoocrowded.com/2009/03/14/jquery-supportminheight/

Edit:

trovato questo post, così che aiuta: When IE8 is not IE8 what is $.browser.version?

+1

Vuoi dire scoraggiato? ;) +1 per il rilevamento delle funzionalità, si prega di farlo 'nel modo giusto': http://www.nczonline.net/blog/2009/12/29/feature-detection-is-not-browser-detection/ –

+0

@Marcel Korpel: Haha, grazie! –

+0

Mi hai battuto Marcel :) –

-7

Utilizzare una libreria reale come jquery, ecc., Quindi non dovresti preoccuparti di questo il più delle volte.

+6

-1 - raccomandare una libreria va bene, raccomandare una libreria che è già elencata nei tag è inutile, non descrivere come risolvere il problema con detta libreria è meno che utile. – Quentin

+0

Solo dipendere da una libreria invece di cercare di capire la lingua stessa è una brutta cosa. Devi conoscere anche qualche javascript. – poo

+0

Rilevare il browser non riguarda solo javacript. Il tuo confondere la lingua e la piattaforma con il successivo che ospita effettivamente la stringa dell'agente utente. –

-3

Per questo è possibile utilizzare navigator.userAgent. Basta vedere se contiene Mozilla

+4

Praticamente tutto include la stringa * Mozilla * ... incluso Safari su iPhone! Questo è inutile per determinare se viene utilizzato Firefox, è inutile per determinare se viene utilizzato un computer! – Quentin

+0

Dai un'occhiata a http://www.nczonline.net/blog/2010/01/12/history-of-the-user-agent-string per una cronologia dettagliata del famigerato * tag * Mozilla *. –

1

È possibile effettuare il controllo con navigator.userAgent o navigator oggetto di javascript in generale,

Ma se si desidera utilizzare qualcosa di pronto a partire, Assegno this:

http://www.quirksmode.org/js/detect.html

spero che questo aiuti, Sinan.

1

È meglio rilevare le funzionalità necessarie, non un browser. Per esempio, se avete bisogno di sapere se foo() è supportato, è possibile controllare con if (foo) {}

4
navigator.sayswho= (function(){ 
    var N= navigator.appName, ua= navigator.userAgent, tem; 
    var M= ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i); 
    if(M && (tem= ua.match(/version\/([\.\d]+)/i))!= null) M[2]= tem[1]; 
    M= M? [M[1], M[2]]: [N, navigator.appVersion,'-?']; 
    return M.join(' '); 
})(); 

come suggerisce il nome, questo è ciò che il browser dice è- ma rilevamento uso oggetto prima di chiedere per fare in realtà nulla ...

Io lo uso per gli errori di registrazione da parte degli utenti e nel codice di test in più browser, dove conosco le stringhe userAgent.

10

In questo modo: controlla Firefox. O qualche altro browser.

window.onload = function() { 
      // alert(navigator.userAgent); 
      if (navigator.userAgent.indexOf("Firefox") > 0) { 
       alert("ff"); 
      } 
     } 
+0

Funziona per la mia situazione, grazie! – SlickRemix

1

Come già richiesto in un commento: perché lo vuoi? Lo sniffing del browser è una cattiva abitudine e ci sono solo alcune situazioni in cui è necessario.

Utilizzare invece il rilevamento delle funzioni. Come described by Nicholas Zakas, dovresti testare caratteristiche relativamente "non comuni" prima di usarle e fare affidamento solo su questi test, quindi sei un po 'sicuro.Ad esempio, fare

if (window.XMLHttpRequest) 
    var xhr = new XMLHttpRequest(); 

invece di

if ((brwsr.IE && brwsr.IE.version >= 7) || (brwsr.firefox) || (brwsr.opera)) 
    var xhr = new XMLHttpRequest(); 

E anche non fanno

if (window.XMLHttpRequest) 
    // Hey, native XMLHttpRequest-support, so position: fixed is also supported 

(invece, prova se position: fixed è supportato)

Esistono diversi browser non comuni con nomi come Kazehakase e Midori che potrebbero, o non potrebbero, supportare queste funzionalità, quindi gli script funzioneranno silenziosamente su di essi quando si utilizza il rilevamento delle funzioni.

Ma si prega di leggere il mentioned article, in quanto contiene una spiegazione molto buona e approfondita di questa tecnica. (A proposito, penso che Zakas 'Professional JavaScript for Web Developers è ancora troppo sconosciuto.)

+2

Sarebbe bello se funzionasse sempre così. Ma a volte hai un caso in cui le funzionalità sono implementate in modo leggermente diverso nei vari browser, ma questa differenza non è dichiarata in una variabile. Ad esempio, sto cercando di risolvere il problema che non è possibile copiare il testo da campi disabilitati in firefox, ma è possibile farlo in ogni altro browser. Quindi ho bisogno di passare all'uso dell'attributo readOnly in firefox. Non c'è modo di rilevare altro che conoscere l'agente utente. – jsarma

30

Sto facendo alcune cose come di seguito;

function checkBrowser(){ 
    c = navigator.userAgent.search("Chrome"); 
    f = navigator.userAgent.search("Firefox"); 
    m8 = navigator.userAgent.search("MSIE 8.0"); 
    m9 = navigator.userAgent.search("MSIE 9.0"); 
    if (c > -1) { 
     browser = "Chrome"; 
    } else if (f > -1) { 
     browser = "Firefox"; 
    } else if (m9 > -1) { 
     browser ="MSIE 9.0"; 
    } else if (m8 > -1) { 
     browser ="MSIE 8.0"; 
    } 
    return browser; 
} 
3
if (navigator.userAgent.indexOf("Firefox") != -1) { 

//some specific code for Mozilla 

} 
Problemi correlati