2010-03-22 13 views
10

Sto provando a utilizzare questa linea per rilevare il tipo di browser: IE o Firefox.Utilizzo di javascript per rilevare il tipo di browser

alert(isBrowser("Microsoft")); 

ma non ottengo assolutamente nulla, l'avviso non viene nemmeno visualizzato. Non sono sicuro di cosa sto sbagliando.

Quale sarebbe il modo migliore per rilevare il tipo di browser?

risposta

8

Prova questo:

alert(navigator.appName); 
+0

Mi piace la semplicità di questa risposta. Qualcuno ha obiezioni a questo, perché anche se le altre risposte sono più complete (numero di versione della copertina, ecc.) Tutto ciò di cui ho bisogno è il tipo di browser. Ma tutti i problemi noti qui. A proposito, l'ho provato su FF e ha detto Netscape! – Duber

+3

L'ho provato su Chrome e dice anche netscape: s –

+2

Chrome, Firefox e Safari restituiscono il nome "Netscape". –

4

Penso che jQuery abbia capito bene quando supportano testing for features invece del solo browser.

+1

Sono d'accordo con la teoria - e per lo più funziona anche nella pratica. Ma occasionalmente è necessario conoscere il browser. Ad esempio, come si rileva il right-mouse-click nel webkit (safari o chrome) anche prototype.js deve ricorrere al rilevamento del browser qui – plodder

1

un ottimo articolo su questo viene da Quirksmode: http://www.quirksmode.org/js/support.html

Lo script fornito da 'lajuette' è buona, ma non ti rende molto più intelligente. Lo stesso autore a spiegare il suo pensiero dietro lo script nel link qui sopra e in fondo ciò che dice è:

  • Si Non circa il rilevamento del browser
  • Si tratta di rilevamento su oggetto
  • Questo porta alla conoscenza del browser utilizzato.
+0

Questa risposta ti aiuterà indipendentemente da un framework javascript, che credo sia il miglior punto di partenza. – JeroenEijkhof

-1
function whereUWantToDetectBrowser(){ 
     if (navigator.appName == "Microsoft Internet Explorer") 
     intExp(); 
     else 
     other(); 

} 
function intExp(){ 
     //do what you want to do for specifically Internet Explorer 
} 
function other(){ 
     //do what you want to do for other browsers 
} 

questo codice risolve il problema. Invece di chiamare le funzioni da whereUWantToDetectBrowser(), se scrivi qui il tuo codice specifico, ciò causerà un errore. E il codice non verrà eseguito. Perché un browser rileva il codice che deve eseguire (specifico per ciascun browser). e se stai distinguendo il codice significa che il codice non funziona in alcuni browser, quindi vuoi scriverlo specificatamente per quei browser. Quindi, other() non avranno effetto in IE, poiché intExp() non ha alcun effetto su altri browser.

3

Per il rilevamento MSIE è possibile utilizzare JavaScript:

// This function returns Internet Explorer's major version number, 
    // or 0 for others. It works by finding the "MSIE " string and 
    // extracting the version number following the space, up to the decimal 
    // point, ignoring the minor version number 
    <SCRIPT LANGUAGE="JavaSCRIPT"> 
    function msieversion() 
    { 
     var ua = window.navigator.userAgent 
     var msie = ua.indexOf ("MSIE ") 

     if (msie > 0)  // If Internet Explorer, return version number 
     return parseInt (ua.substring (msie+5, ua.indexOf (".", msie))) 
     else     // If another browser, return 0 
     return 0 

    } 
    </SCRIPT> 

Di seguito è un esempio di come chiamare ovunque nel tuo html:

<SCRIPT LANGUAGE="javascript"> 
    if (msieversion() >= 0) 

     document.write ("This is Internet Explorer"); 

    else 

     document.write ("This is another browser"); 

    </SCRIPT> 

http://support.microsoft.com/kb/167820 http://support.microsoft.com/kb/167820

+0

È meglio se si fornisca una risposta reale con il codice qui e fornisca il collegamento come backup da cui è stata ottenuta l'informazione. – Anthon

+2

Ho corretto la mia risposta. –

+1

"msieversion()> = 0" dovrebbe leggere "msieversion> 0." Altrimenti tutti i browser restituiranno "Questo è Internet Explorer". – flyingace

-2

Il migliore e il modo più breve per trovare il tipo di browser per IE è ..U può fare lo stesso per altri tipi di browser

if (navigator.appName == "Microsoft Internet Explorer"){ 

// Ur piece of validation 

} 
+0

funzionerà solo per IE 10 e versioni precedenti. Controllalo [qui.] (Http://www.w3schools.com/jsref/prop_nav_appname.asp) –

Problemi correlati