Je souhaite renvoyer les utilisateurs de notre site Web vers une page d'erreur s'ils utilisent une version Internet Explorer
antérieure à la v9. Cela ne vaut tout simplement pas notre temps et notre argent pour soutenirIE pre-v9
. Les utilisateurs de tous les autres navigateurs non IE vont bien et ne devraient pas être renvoyés. Voici le code proposé:
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
}
}
Ce code fera-t-il l'affaire?
Pour éviter quelques commentaires qui viendront probablement à ma rencontre:
- Oui, je sais que les utilisateurs peuvent forger leur
useragent
chaîne. Je ne suis pas inquiet. - Oui, je sais que les pros de la programmation préfèrent renifler la prise en charge des fonctionnalités plutôt que le type de navigateur, mais je ne pense pas que cette approche soit logique dans ce cas. Je sais déjà que tous les navigateurs (pertinents) non IE prennent en charge les fonctionnalités dont j'ai besoin et que tous
pre-v9 IE
navigateurs ne le font pas. La vérification fonctionnalité par fonctionnalité sur l'ensemble du site serait un gaspillage. - Oui, je sais que quelqu'un essaie d'accéder au site en utilisant
IE v1
(ou> = 20) ne mettrait pas «badBrowser» sur true et la page d'avertissement ne s'afficherait pas correctement. C'est un risque que nous sommes prêts à prendre. - Oui, je sais que Microsoft a des "commentaires conditionnels" qui peuvent être utilisés pour une détection précise de la version du navigateur. IE ne prend plus en charge les commentaires conditionnels depuis
IE 10
, ce qui rend cette approche absolument inutile.
Y a-t-il d'autres problèmes évidents à connaître?
javascript
internet-explorer
user-agent
browser-detection
Chad Decker
la source
la source
Réponses:
C'est ma façon préférée de le faire. Il donne un contrôle maximal. (Remarque: les instructions conditionnelles ne sont prises en charge que dans IE5 - 9.)
Configurez d'abord vos classes ie correctement
Ensuite, vous pouvez simplement utiliser CSS pour faire des exceptions de style, ou, si vous le souhaitez, vous pouvez ajouter du JavaScript simple:
Merci à Paul Irish .
la source
Error: Saw <!-- within a comment. Probable cause: Nested comment (not allowed). At line 5, column 21 if gt IE 8]><!--><html
Retourne la version IE ou sinon IE retourne faux
Exemple:
ou
ou
la source
"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) {
Si personne d'autre n'a ajouté une
addEventLister
méthode -et que vous utilisez le bon mode de navigation, vous pouvez vérifier IE 8 ou moins avecInternet Explorer hérité et attachEvent (MDN)
la source
Utilisez des commentaires conditionnels. Vous essayez de détecter les utilisateurs d'IE <9 et les commentaires conditionnels fonctionneront dans ces navigateurs; dans les autres navigateurs (IE> = 10 et non IE), les commentaires seront traités comme des commentaires HTML normaux, ce qu'ils sont.
Exemple HTML:
Vous pouvez également le faire uniquement avec un script, si vous avez besoin:
la source
Pour détecter MSIE (v6 - v7 - v8 - v9 - v10 - v11) facilement:
la source
Voici comment AngularJS vérifie IE
la source
Pour filtrer de manière fiable IE8 et les versions antérieures, la vérification des objets globaux peut être utilisée:
la source
Détection de la version IE à l'aide de la détection des fonctionnalités (IE6 +, les navigateurs antérieurs à IE6 sont détectés comme 6, renvoie null pour les navigateurs non IE):
Edit: J'ai créé un repo bower / npm pour votre commodité: ie-version
Mettre à jour:
une version plus compacte peut être écrite sur une seule ligne:
la source
Cette fonction renverra le numéro de version principale d'IE sous forme d'entier, ou
undefined
si le navigateur n'est pas Internet Explorer. Ceci, comme toutes les solutions d'agent utilisateur, est sensible à l'usurpation d'agent utilisateur (qui est une fonction officielle d'IE depuis la version 8).la source
console.log(!!match && parseInt(match[1]))
,console.log(parseInt(match[1]))
etconsole.log(match)
, mais aucun résultat avec aucun d'entre eux.getIEVersion()
. Par exemple:if (getIEVersion() < 9) {/* IE 8 or below */}
if (!getIEVersion()) {/* Not IE */}
Détecter IE dans JS à l'aide de commentaires conditionnels
la source
Cela fonctionne pour moi. Je l'utilise comme redirection vers une page qui explique pourquoi nous n'aimons pas <IE9 et fournissons des liens vers les navigateurs que nous préférons.
la source
Votre code peut faire la vérification, mais comme vous le pensiez, si quelqu'un essaie d'accéder à votre page en utilisant IE v1 ou> v19 n'obtiendra pas l'erreur, il pourrait donc être plus sûr de faire la vérification avec l'expression Regex comme ce code ci-dessous:
la source
Les commentaires conditionnels ne sont plus pris en charge dans IE à partir de la version 10, comme indiqué sur la page de référence Microsoft .
puis utilisez:
la source
version 11
EDIT: Ce code est incroyable! haha, ça donne un objet avec tout à l'intérieur. La version est 11 mais docModeIR est égal à 9. Merci!Pour ie 10 et 11:
Vous pouvez utiliser js et ajouter une classe en html pour maintenir la norme des commentaires conditionnels :
Ou utilisez une lib comme bowser:
https://github.com/ded/bowser
Ou modernizr pour la détection des fonctionnalités:
http://modernizr.com/
la source
Pour détecter Internet Explorer 10 | 11, vous pouvez utiliser ce petit script immédiatement après la balise body:
Dans mon cas, j'utilise la bibliothèque jQuery chargée dans la tête.
la source
Il a été répondu à mort, mais c'est tout ce dont vous avez besoin.
la source
la source
Selon Microsoft , ce qui suit est la meilleure solution, elle est également très simple:
la source
Je vais recommander de ne pas réécrire ce code pour la énième fois. Je vous recommande d'utiliser la bibliothèque Conditionizr ( http://conditionizr.com/ ) qui est capable de tester des versions spécifiques d'IE ainsi que d'autres navigateurs, systèmes d'exploitation, et même la présence ou l'absence d'écrans Retina.
N'incluez le code que pour les tests spécifiques dont vous avez besoin et vous bénéficiez également d'une bibliothèque testée qui a subi de nombreuses itérations (et qui serait facile à mettre à niveau sans casser votre code).
Il s'intègre également parfaitement à Modernizr, qui peut gérer tous les cas où vous feriez mieux de tester une fonctionnalité spécifique plutôt qu'un navigateur spécifique.
la source
J'aime ça:
la source
Cette approche pour détecter IE combine les forces et évite les faiblesses de la réponse de jKey en utilisant des commentaires conditionnels et de la réponse d'Owen en utilisant des agents utilisateurs.
L'approche d'Owen peut échouer sur IE 5 et 6 (rapport 7) et est sensible à l'usurpation d'identité UA, mais il peut détecter des versions IE> = 10 (maintenant également 12, ce qui est postérieur à la réponse d'Owen).
Cela peut être utilisé pour définir des classes utiles pour votre document contenant la version IE:
Notez qu'il détecte le mode de compatibilité utilisé, si IE est en mode de compatibilité. Notez également que la version IE est surtout utile pour les anciennes versions (<10); les versions supérieures sont plus conformes aux normes et il est probablement préférable de vérifier les fonctionnalités à l'aide de quelque chose comme modernizr.js.
la source
J'ai fait un mixage de soulignement pratique pour cela.
la source
ou simplement
la source
Le script JS le plus complet que j'ai trouvé pour vérifier les versions d'IE est http://www.pinlady.net/PluginDetect/IE/ . La bibliothèque entière est à http://www.pinlady.net/PluginDetect/Browsers/ .
Avec IE10, les instructions conditionnelles ne sont plus prises en charge.
Avec IE11, l'agent utilisateur ne contient plus MSIE. En outre, l'utilisation de l'agent utilisateur n'est pas fiable car elle peut être modifiée.
En utilisant le script PluginDetect JS, vous pouvez détecter pour IE et détecter les versions exactes en utilisant du code très spécifique et bien conçu qui cible des versions spécifiques d'IE. Ceci est très utile lorsque vous vous souciez exactement de la version du navigateur avec laquelle vous travaillez.
la source
Je me rends compte que je suis un peu en retard à la fête ici, mais j'avais vérifié un moyen simple d'une ligne pour indiquer si un navigateur est IE et quelle version à partir de 10 c'était. Je n'ai pas codé cela pour la version 11, donc peut-être qu'un petit amendement sera nécessaire pour cela.
Cependant, c'est le code, il fonctionne comme un objet qui a une propriété et une méthode et repose sur la détection d'objet plutôt que de gratter l'objet navigateur (qui est massivement défectueux car il peut être usurpé).
L'utilisation est
isIE.browser
une propriété qui renvoie un booléen et s'appuie sur des commentaires conditionnels, la méthodeisIE.detectedVersion()
qui renvoie un nombre compris entre 5 et 10. Je fais l'hypothèse que tout ce qui est inférieur à 6 et que vous êtes en territoire old school sérieux et que vous aurez quelque chose de plus costaud que un paquebot et tout ce qui est supérieur à 10 et vous êtes sur un nouveau territoire. J'ai lu quelque chose sur IE11 qui ne prend pas en charge les commentaires conditionnels mais je n'ai pas complètement enquêté, c'est peut-être pour une date ultérieure.Quoi qu'il en soit, tel qu'il est, et pour une seule ligne, il couvrira les bases du navigateur IE et de la détection de version. C'est loin d'être parfait, mais il est petit et facilement modifiable.
Juste pour référence, et si quelqu'un a un doute sur la façon de l'implémenter, les conditions suivantes devraient aider.
la source
Détecter IE et ses versions ne pourrait pas être plus facile, et tout ce dont vous avez besoin est un peu de Javascript natif / vanille:
Et c'est une façon de l'utiliser:
.
Fonctionne dans toutes les versions d'IE, y compris les versions supérieures en mode / mode de compatibilité inférieur, et
documentMode
est propriétaire d'IE.la source
Si vous devez supprimer la version du navigateur IE, vous pouvez suivre le code ci-dessous. Ce code fonctionne bien pour la version IE6 à IE11
la source
La fenêtre s'exécute IE10 sera mise à jour automatique vers IE11 + et sera normalisée W3C
De nos jours, nous n'avons pas besoin de supporter IE8-
la source
la source
la source