Ich möchte Benutzer unserer Website auf eine Fehlerseite Internet Explorer
leiten, wenn sie eine Version vor Version 9 verwenden. Es ist einfach nicht unsere Zeit und unser Geld wert, um zu unterstützen IE pre-v9
. Benutzer aller anderen Nicht-IE-Browser sind in Ordnung und sollten nicht zurückgeworfen werden. Hier ist der vorgeschlagene Code:
if(navigator.appName.indexOf("Internet Explorer")!=-1){ //yeah, he's using IE
var badBrowser=(
navigator.appVersion.indexOf("MSIE 9")==-1 && //v9 is ok
navigator.appVersion.indexOf("MSIE 1")==-1 //v10, 11, 12, etc. is fine too
);
if(badBrowser){
// navigate to error page
}
}
Wird dieser Code den Trick machen?
Um ein paar Kommentare abzuwenden, die mir wahrscheinlich in den Weg kommen werden:
- Ja, ich weiß, dass Benutzer ihre
useragent
Zeichenfolge fälschen können . Ich bin nicht besorgt. - Ja, ich weiß, dass Programmierprofis es vorziehen, die Unterstützung von Funktionen anstelle des Browsertyps auszuspionieren, aber ich halte diesen Ansatz in diesem Fall nicht für sinnvoll. Ich weiß bereits, dass alle (relevanten) Nicht-IE-Browser die Funktionen unterstützen, die ich benötige, und dass alle
pre-v9 IE
Browser dies nicht tun. Das Überprüfen von Merkmal zu Merkmal auf der gesamten Website wäre eine Verschwendung. - Ja, ich weiß, dass jemand, der versucht, mit
IE v1
(oder> = 20) auf die Site zuzugreifen , 'badBrowser' nicht auf true gesetzt hat und die Warnseite nicht richtig angezeigt wird. Das ist ein Risiko, das wir eingehen wollen. - Ja, ich weiß, dass Microsoft "bedingte Kommentare" hat, die zur präzisen Erkennung von Browserversionen verwendet werden können. IE unterstützt ab sofort keine bedingten Kommentare mehr
IE 10
, was diesen Ansatz absolut nutzlos macht.
Gibt es noch andere offensichtliche Probleme, die Sie beachten sollten?
javascript
internet-explorer
user-agent
browser-detection
Chad Decker
quelle
quelle
Antworten:
Dies ist meine bevorzugte Methode. Es gibt maximale Kontrolle. (Hinweis: Bedingte Anweisungen werden nur in IE5 - 9 unterstützt.)
Richten Sie zuerst Ihre dh Klassen richtig ein
Dann können Sie einfach CSS verwenden, um Stilausnahmen zu machen, oder bei Bedarf können Sie einfaches JavaScript hinzufügen:
Vielen Dank an Paul Irish .
quelle
Error: Saw <!-- within a comment. Probable cause: Nested comment (not allowed). At line 5, column 21 if gt IE 8]><!--><html
IE-Version zurückgeben oder wenn nicht IE false zurückgeben
Beispiel:
oder
oder
quelle
"mozilla/5.0 (windows nt 6.3; wow64; trident/7.0; .net4.0e; .net4.0c; media center pc 6.0; .net clr 3.5.30729; .net clr 2.0.50727; .net clr 3.0.30729; rv:11.0) like gecko"
if (isIE () && isIE () < 9) {
Wenn niemand eine
addEventLister
Methode hinzugefügt hat und Sie den richtigen Browsermodus verwenden, können Sie mit nach IE 8 oder weniger suchenLegacy Internet Explorer und attachEvent (MDN)
quelle
Verwenden Sie bedingte Kommentare. Sie versuchen, Benutzer von IE <9 zu erkennen, und bedingte Kommentare funktionieren in diesen Browsern. In anderen Browsern (IE> = 10 und Nicht-IE) werden die Kommentare als normale HTML-Kommentare behandelt.
Beispiel HTML:
Sie können dies auch nur mit Skript tun, wenn Sie Folgendes benötigen:
quelle
So erkennen Sie MSIE (v6 - v7 - v8 - v9 - v10 - v11) auf einfache Weise:
quelle
Hier ist die Art und Weise AngularJS Kontrollen für IE
quelle
Um IE8 und älter zuverlässig zu filtern, können globale Objekte überprüft werden:
quelle
Erkennen der IE-Version mithilfe der Funktionserkennung (IE6 +, Browser vor IE6 werden als 6 erkannt, gibt für Nicht-IE-Browser null zurück):
Bearbeiten: Ich habe ein Bower / Npm-Repo für Ihre Bequemlichkeit erstellt: dh-Version
Aktualisieren:
Eine kompaktere Version kann in einer Zeile geschrieben werden als:
quelle
Diese Funktion gibt die Hauptversionsnummer des IE als Ganzzahl zurück oder
undefined
wenn der Browser nicht Internet Explorer ist. Dies ist, wie alle Benutzeragentenlösungen, für das Spoofing von Benutzeragenten geeignet (das seit Version 8 eine offizielle Funktion des IE ist).quelle
console.log(!!match && parseInt(match[1]))
,console.log(parseInt(match[1]))
undconsole.log(match)
, aber kein Ergebnis mit einem von ihnen.getIEVersion()
. Zum Beispiel:if (getIEVersion() < 9) {/* IE 8 or below */}
if (!getIEVersion()) {/* Not IE */}
Erkennen Sie den IE in JS anhand von bedingten Kommentaren
quelle
Das funktioniert bei mir. Ich verwende es als Weiterleitung zu einer Seite, die erklärt, warum wir <IE9 nicht mögen, und Links zu Browsern bereitstellt, die wir bevorzugen.
quelle
Ihr Code kann die Überprüfung durchführen. Wenn jedoch jemand versucht, mit IE v1 oder> v19 auf Ihre Seite zuzugreifen, wird der Fehler nicht angezeigt. Führen Sie die Überprüfung daher möglicherweise sicherer mit dem Regex-Ausdruck wie dem folgenden Code durch:
quelle
Bedingte Kommentare werden im IE ab Version 10 nicht mehr unterstützt, wie auf der Microsoft-Referenzseite angegeben .
dann benutze:
quelle
version 11
EDIT: Dieser Code ist ERSTAUNLICH! haha, es gibt ein Objekt mit allem im Inneren. Version ist 11, aber docModeIR ist gleich 9. Danke!Für dh 10 und 11:
Sie können js verwenden und eine Klasse in HTML hinzufügen, um den Standard der bedingten Kommentare beizubehalten :
Oder verwenden Sie eine Bibliothek wie Bowser:
https://github.com/ded/bowser
Oder modernizr zur Merkmalserkennung:
http://modernizr.com/
quelle
Um Internet Explorer 10 | 11 zu erkennen, können Sie dieses kleine Skript unmittelbar nach dem Body-Tag verwenden:
In meinem Fall verwende ich die in head geladene jQuery-Bibliothek.
quelle
Dies wurde zu Tode beantwortet, aber das ist alles was Sie brauchen.
quelle
quelle
Laut Microsoft ist das Folgende die beste Lösung, es ist auch sehr einfach:
quelle
Ich werde empfehlen, diesen Code nicht zum x-ten Mal neu zu schreiben. Ich würde empfehlen, dass Sie die Conditionizr-Bibliothek ( http://conditionizr.com/) verwenden. ) zu verwenden, mit der bestimmte IE-Versionen sowie andere Browser, Betriebssysteme und sogar das Vorhandensein oder Fehlen von Retina-Anzeigen getestet werden können.
Fügen Sie den Code nur für die spezifischen Tests ein, die Sie benötigen, und Sie profitieren von einer getesteten Bibliothek, die viele Iterationen durchlaufen hat (und die leicht aktualisiert werden kann, ohne Ihren Code zu beschädigen).
Es passt auch gut zu Modernizr, das all die Fälle bewältigen kann, in denen Sie besser auf eine bestimmte Funktion als auf einen bestimmten Browser testen sollten.
quelle
Das gefällt mir:
quelle
Dieser Ansatz zur Erkennung des IE kombiniert die Stärken und vermeidet die Schwächen der Antwort von jKey mithilfe von bedingten Kommentaren und der Antwort von Owen mithilfe von Benutzeragenten.
Owens Ansatz kann in IE 5 und 6 fehlschlagen (Bericht 7) und ist anfällig für UA-Spoofing, kann jedoch IE-Versionen> = 10 erkennen (jetzt auch 12, was Owens Antwort nachdatiert).
Dies kann verwendet werden, um nützliche Klassen für Ihr Dokument festzulegen, das die IE-Version enthält:
Beachten Sie, dass der verwendete Kompatibilitätsmodus erkannt wird, wenn sich der IE im Kompatibilitätsmodus befindet. Beachten Sie auch, dass die IE-Version hauptsächlich für ältere Versionen nützlich ist (<10). Höhere Versionen sind standardkonformer und es ist wahrscheinlich besser, stattdessen mit modernizr.js nach Funktionen zu suchen.
quelle
Ich habe dafür ein praktisches Unterstrich-Mixin gemacht.
quelle
oder einfach
quelle
Das umfassendste JS-Skript, das ich gefunden habe, um nach Versionen des IE zu suchen, ist http://www.pinlady.net/PluginDetect/IE/ . Die gesamte Bibliothek befindet sich unter http://www.pinlady.net/PluginDetect/Browsers/ .
Mit IE10 werden bedingte Anweisungen nicht mehr unterstützt.
Mit IE11 enthält der Benutzeragent kein MSIE mehr. Die Verwendung des Benutzeragenten ist auch nicht zuverlässig, da dies geändert werden kann.
Mit dem PluginDetect JS-Skript können Sie den IE erkennen und die genauen Versionen ermitteln, indem Sie sehr spezifischen und gut gestalteten Code verwenden, der auf bestimmte IE-Versionen abzielt. Dies ist sehr nützlich, wenn Sie genau wissen, mit welcher Browserversion Sie arbeiten.
quelle
Mir ist klar, dass ich hier etwas zu spät zur Party komme, aber ich habe einen einfachen einzeiligen Weg ausprobiert, um Feedback zu geben, ob ein Browser IE ist und welche Version ab 10 es war. Ich habe dies nicht für Version 11 codiert, daher ist möglicherweise eine kleine Änderung erforderlich.
Dies ist jedoch der Code. Er funktioniert als Objekt mit einer Eigenschaft und einer Methode und basiert auf der Objekterkennung, anstatt das Navigatorobjekt zu kratzen (das massiv fehlerhaft ist, da es gefälscht werden kann).
Die Verwendung ist
isIE.browser
eine Eigenschaft, die einen Booleschen Wert zurückgibt und sich auf bedingte Kommentare stützt. Die MethodeisIE.detectedVersion()
gibt eine Zahl zwischen 5 und 10 zurück. Ich gehe davon aus, dass alles unter 6 liegt und Sie sich in einem ernsthaften Gebiet der alten Schule befinden und etwas bulligeres als Ein Einzeiler und alles, was höher als 10 ist, und Sie befinden sich in einem neueren Gebiet. Ich habe etwas über IE11 gelesen, das bedingte Kommentare nicht unterstützt, aber ich habe es nicht vollständig untersucht, vielleicht für einen späteren Zeitpunkt.Wie auch immer, und für einen Einzeiler werden die Grundlagen des IE-Browsers und der Versionserkennung behandelt. Es ist alles andere als perfekt, aber es ist klein und leicht zu ändern.
Nur als Referenz, und wenn jemand Zweifel daran hat, wie dies tatsächlich implementiert werden soll, sollte die folgende Bedingung helfen.
quelle
Das Erkennen des IE und seiner Versionen könnte nicht einfacher sein, und alles, was Sie brauchen, ist ein bisschen natives / Vanille-Javascript:
Und dies ist eine Möglichkeit, es zu verwenden:
.
Funktioniert in allen IE-Versionen, einschließlich höherer Versionen in niedrigerer Kompatibilitätsansicht / -modus, und
documentMode
ist IE-geschützt.quelle
Wenn Sie die IE-Browserversion löschen müssen, können Sie dem folgenden Code folgen. Dieser Code funktioniert gut für die Versionen IE6 bis IE11
quelle
Fenster läuft IE10 wird automatisch auf IE11 + aktualisiert und standardisiert W3C
Heutzutage müssen wir IE8- nicht mehr unterstützen.
quelle
quelle
quelle