2009-12-22 16 views
20
$(window).load(function() { 
    if($.browser.msie && $.browser.version=="6.0") { 
    // do stuff 
    } 
}); 

Appena realizzato che $. Browser è stato ammortizzato in 1.3. Qual è il nuovo metodo per rilevare IE, specialmente IE6.Rilevamento di IE utilizzando jQuery

+2

'jQuery.browser' non è deprecato.Sebbene non sia più utilizzato internamente da jQuery, è disponibile per gli script utente per il futuro indefinito: http://docs.jquery.com/Utilities/jQuery.browser –

+0

La documentazione dice "Obsoleto in jQuery 1.3 (si veda' jQuery.support')) Il numero di versione del motore di rendering per il browser dell'utente. ". – kiamlaluno

+1

* Il rilevamento delle funzioni * è molto meglio di * sniffing del browser *, cosa stai cercando di ottenere quando la tua pagina viene renderizzata da IE6? – CMS

risposta

19

Il jQuery documentation for jQuery.browser mostra il seguente avviso. (Corsivo è mio.)

Perché $.browser utilizza navigator.userAgent per determinare la piattaforma, è vulnerabile a spoofing da parte dell'utente o falsa dichiarazione dal browser stesso. È sempre meglio evitare il codice specifico del browser interamente ove possibile. Invece di fare affidamento su $.browser è meglio usare librerie come Modernizr.

La pagina di documentazione dice anche:

Questa struttura è stata rimossa in jQuery 1.9 ed è disponibile solo attraverso il plugin jQuery.migrate. Si prega di provare a utilizzare il rilevamento di funzionalità, invece.

Anche jQuery.support, che è stato suggerito dalla vecchia documentazione ha il seguente avviso. (L'enfasi è mia.)

Una raccolta di proprietà che rappresentano la presenza di diverse funzionalità o bug del browser. Destinato all'uso interno di jQuery; proprietà specifiche possono essere rimosse quando non sono più necessarie internamente per migliorare le prestazioni di avvio della pagina. Per esigenze di rilevamento delle caratteristiche del proprio progetto, si consiglia vivamente l'uso di una libreria esterna come Modernizr anziché la dipendenza dalle proprietà in jQuery.support.

La documentazione precedente per jQuery.support riportava le seguenti proprietà e valori.

  • $.support.boxmodel è false in IE 6 e 7.
  • $.support.cssFloat è false per IE 6, 7 e 8; è true in IE 9.
  • $.support.leadingWhitespace è false per IE 6, 7 e 8.
  • $.support.objectAll è attualmente false per IE 6, 7 e 8.
+2

Solo per tutti gli altri che trovano questo commento, $ .support.cssFloat è false per IE 6, 7 e 8. In IE 9 è vero. – Nemke

+0

So che questa risposta è un po 'vecchia, ma il debug in IE9 con la modalità Browser IE7 ha $ .support.boxModel === true. Forse è perché sto usando una modalità browser in IE9 ?? – kand

6

calda dalla documentazione: Noi raccomandare di non utilizzare questa proprietà, si prega di provare a utilizzare invece il rilevamento delle funzioni (vedere jQuery.support).

1

Mostra il browser Informazioni

jQuery.each(jQuery.browser, function(i, val) { 
$("<div>" + i + " : <span>" + val + "</span>") 
.appendTo(document.body); 
}); 

Alert la versione del motore di rendering di IE che viene utilizzato. Non funzionerà in jQuery 1.9 o versioni successive a meno che non sia incluso il plug-in di migrazione di jQuery.

if ($.browser.msie) { 
alert($.browser.version); 
} 
Problemi correlati