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

Nur festgestellt, dass $. Browser in 1.3 abgeschrieben wurde. Was ist die neue Methode zur Erkennung von IE, speziell IE6.Erkennen von IE mit jQuery

+2

'jQuery.browser' ist nicht veraltet.Obwohl es intern nicht mehr von jQuery verwendet wird, ist es für Benutzerskripts für die unbestimmte Zukunft verfügbar: http://docs.jquery.com/Utilities/jQuery.browser –

+0

Die Dokumentation sagt "Veraltet in jQuery 1.3 (siehe' jQuery.support ") Die Versionsnummer der Rendering-Engine für den Browser des Benutzers. ". – kiamlaluno

+1

* Feature-Erkennung * ist viel besser als * Browser-Sniffing *, was versuchen Sie zu erreichen, wenn Ihre Seite von IE6 gerendert wird? – CMS

Antwort

19

Die jQuery documentation for jQuery.browser zeigt die folgende Warnung. (Hervorhebung ist mein.)

Weil $.browsernavigator.userAgent nutzt die Plattform, um zu bestimmen, es Spoofing durch den Benutzer oder falsche Darstellung durch den Browser selbst anfällig ist. Es ist immer am besten, Browser-spezifischen Code vollständig zu vermeiden wo möglich. Anstatt sich auf $.browser zu verlassen, ist es besser, Bibliotheken wie Modernizr zu verwenden.

Die Dokumentation Seite sagt auch:

Diese Eigenschaft in jQuery 1.9 entfernt wurde und nur durch das jQuery.migrate Plugin verfügbar ist. Versuchen Sie stattdessen, die Funktionserkennung zu verwenden.

Sogar jQuery.support, die aus der alten Dokumentation vorgeschlagen wurde, weist die folgende Warnung auf. (Hervorhebung ist meins.)

Eine Sammlung von Eigenschaften, die das Vorhandensein von verschiedenen Browserfunktionen oder Fehlern darstellen. Vorgesehen für interne Verwendung von jQuery; Bestimmte Eigenschaften können entfernt werden, wenn sie intern nicht mehr benötigt werden, um die Seitenstartleistung zu verbessern. Für die Feature-Erkennung Ihres eigenen Projekts empfehlen wir dringend die Verwendung einer externen Bibliothek wie Modernizr anstelle der Abhängigkeit von Eigenschaften in jQuery.support.

Die vorherige Dokumentation für jQuery.support berichtet die folgenden Eigenschaften und Werte.

  • $.support.boxmodel ist false in IE 6 und 7.
  • $.support.cssFloat ist false für IE 6, 7 und 8; es ist true in IE 9.
  • $.support.leadingWhitespace ist false für IE 6, 7 und 8.
  • $.support.objectAll ist derzeit false für IE 6, 7 und 8.
+2

Nur für alle anderen, die diesen Kommentar finden, $ .support.cssFloat ist falsch für IE 6, 7 und 8. In IE 9 ist es wahr. – Nemke

+0

Ich weiß, diese Antwort ist irgendwie alt, aber das Debuggen in IE9 mit Browser-Modus IE7 hat $ .support.boxModel === true. Vielleicht liegt es daran, dass ich einen Browser-Modus in IE9 verwende? – kand

6

heiß aus der Dokumentation: Wir empfehlen, diese Eigenschaft nicht zu verwenden, versuchen Sie stattdessen, Feature-Erkennung zu verwenden (siehe jQuery.support). Informationen

1

Zeigen Sie den Browser

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

Benachrichtigung die Version von IE-Rendering-Engine, die verwendet wird. Funktioniert nicht in jQuery 1.9 oder höher, es sei denn, das jQuery Migrate-Plugin ist enthalten.

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