Vérifier si l'utilisateur utilise IE
Je suis l'appel d'une fonction comme celle ci-dessous en cliquant sur les divs avec une certaine classe.
Est-il un moyen que je puisse vérifier lors du démarrage de la fonction si un utilisateur est à l'aide d'Internet Explorer et arrêter /annuler, s'ils utilisent d'autres navigateurs qui ne fonctionne que pour les utilisateurs de IE ? Les utilisateurs seraient tous sur IE8 ou de versions plus récentes, donc je ne voudrais pas besoin de couvrir IE7 et versions inférieures.
Si je pouvais dire quel navigateur ils utilisent ce serait génial, mais n'est pas nécessaire.
Exemple la fonction de:
$('.myClass').on('click', function(event)
{
//my function
});
- Voici un grand nombre d'exemples: stackoverflow.com/questions/2400935/...
- Utilisation moderniste pour détecter internet explorer ou d'autres navigateurs. stackoverflow.com/questions/13478303/...
- Veuillez noter moderne et de développement web, c'est une mauvaise pratique pour détecter les navigateurs.
- Pourquoi?
- Par les normes de développement web, c'est une mauvaise pratique pour développer pour les anciennes versions d'IE pour commencer.
- En fait, cette "mauvaise pratique" est contraint par les normes elles-mêmes, de sorte qu'il n'est pas le développeur de la faute... des Navigateurs fonctionnent différemment et et les spécifications sont trop mous sur les questions de mise en œuvre. Afin de faire quelque chose qui n'est pas buggé et pas ennuyeux comme l'enfer qu'on a à faire la détection du navigateur. Je voudrais suggérer une autre bonne pratique:
With modern web development, it's bad practice to support non-Chromium-based browsers (with Safari not considered to be Chromium-based at all)
. Désolé, mais cette folie doit mettre fin à un certain moment et en quelque sorte... - Il est préférable aujourd'hui de faire fonction de "détection" au dessus "de la détection du navigateur". Demander si le navigateur ne prend ce dont vous avez besoin à la place.
- Cela sonne bien et tout, mais si vous avez besoin d'ajouter des styles en ligne en raison d'un bug dans la façon dont IE mesures de la taille des éléments enfants d'un flexbox élément, alors oui... vous avez besoin de la détection du navigateur.
- Eh bien.. erm.. ouais, bien sûr. Je ne pense pas que n'importe qui, fixant les tables de la loi ici. Je maintiens l'avis de ce qui est préférable. De plus, l'exemple donné par les OP ne veut pas nécessairement dire qu'ils sont sur le point d'écrire un CSS hack. Sur la surface, il semble raisonnable de penser que ils sont sur le point d'appeler la fonction javascript.
- d'excuses... signifiait pour que cela ait plus d'un jokey ton. Je vais blâmer c'est à dire pour voler ma joie et me laissant avec de l'amertume et de la frustration. 🙂
- pas de soucis du tout. IE (aka. "la lune face de l'assassin de la joie", a éteint beaucoup de l'âme. 🙂
- Construire quelque chose de cool! Cela fonctionne? Non?! Ici, vous allez, c'est un IE.
- Par le développement moderne des normes, c'est une mauvaise pratique de l'utilisation d'une application aussi mauvais que IE pour commencer. Néanmoins, la pandémie qui est IE est toujours. Aussi longtemps que les clients sont trop naïfs pour utiliser quelque chose d'autre, nos emplois dépendent de la satisfaction, malgré le carnage qui s'en suit.
- Peut "avec jQuery" être retiré de la question du titre donc, il dit juste "vérifie si l'utilisateur est l'utilisation d'IE"? Les meilleures réponses dans ce fil ne nécessite pas de jQuery et c'est le premier résultat dans Google si vous tapez "vérifier si IE". Ayant jQuery dans le titre pourrait conduire certaines personnes à l'écart de la question.
- Oublié que j'ai modifier les autorisations 😅
Vous devez vous connecter pour publier un commentaire.
Utiliser en dessous de méthode JavaScript :
Vous trouverez les détails ci-dessous site de support Microsoft :
Comment faire pour déterminer la version de votre navigateur à partir d'un script
Mise à jour : (IE 11)
if (msie > 0)
est trompeuse. Si la valeur n'est pas trouvée, le indexOf() renvoie -1 et non de 0. Doncif (msie > -1)
serait plus explicite.IE 11
: stackoverflow.com/a/21712356/114029/Edge\/|Trident\/|MSIE /.test(window.navigator.userAgent)
Je sais que cela fonctionne, les 10 et 11. Si vous pouvez vérifier <IE9 et le Bord, modifier la réponse.if(~msie)
false
? il ne sera jamais frappé que le codeAu Bord de la Chaîne de l'Agent Utilisateur a changé.
Exemple d'utilisation:
Chaîne par défaut de IE 10:
Chaîne par défaut de IE 11:
Par défaut de la chaîne de Bord 12:
Par défaut de la chaîne de Bord 13 (thx @DrCord):
Par défaut de la chaîne de Bord 14:
Par défaut de la chaîne de Edge 15:
Par défaut de la chaîne de Bord 16:
Par défaut de la chaîne de Bord 17:
Par défaut de la chaîne de Bord 18 (Initié un aperçu):
Test à CodePen:
http://codepen.io/gapcode/pen/vEJNZN
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586
NOTE du 13 au lieu de 12 comme la version de Bord numéro!Si tout ce que vous voulez savoir, c'est si le navigateur est IE ou pas, vous pouvez le faire:
Mise à jour 1: Une meilleure méthode
Je recommande ce maintenant. Il est toujours très lisible et qu'il est loin moins de code 🙂
Grâce à JohnnyFun dans les commentaires sur le raccourcissement de répondre 🙂
Mise à jour 2: Essais pour IE CSS
Tout d'abord, si vous le pouvez, vous devez utiliser
@supports
consolidés au lieu de JS pour vérifier si le navigateur prend en charge un certain fonctionnalité CSS.(À noter que IE ne prend pas en charge
@supports
à tous et va ignorer tous les styles placé à l'intérieur d'un@supports
déclaration.)Si le problème ne peut être résolu avec
@supports
ensuite, vous pouvez faire ceci:(Note:
classList
est relativement nouveau pour JS et je pense que, sur les navigateurs IE, il ne fonctionne que dans IE11. Aussi, éventuellement, IE10.)Si vous utilisez SCSS (Sass) dans votre projet, cela peut être simplifiée:
Mise à jour 3: Ajout de Microsoft Bord (non recommandé)
Si vous aussi vous souhaitez ajouter Microsoft Bord dans la liste, vous pouvez effectuer les opérations suivantes. Cependant je ne le recommande pas que Edge est beaucoup plus compétente navigateur qu'IE.
ms_ie = !!ua.match(/MSIE|Trident/)
~
avoir une signification?ua
variable est très bien. Vous ne voulez pas de se débarrasser de laisIE
variable si. À l'aide d'unisIE
variable signifie que vous pouvez facilement test pour IE nouveau plusieurs fois tout au long de votre code sans dépenses supplémentaires calcul des cycles de calcul de la valeur à nouveau. Il est également moins répétitif.import isIE from './isIE.js'
. Maintenant, une autre composante pour quelque raison que ce soit doit vérifier pour IE,import isIE from './isIE.js'
. Et si cela ne suffit pas à vous convaincre, c'est tout simplement mieux pour la lisibilité. Il y a 2 raisons pour utiliser une variable: réduire la répétition de code, et de clarifier ce qu'est un morceau de code ne. Quand vous lisezif (/MSIE|Trident/.test(window.navigator.userAgent))
il est beaucoup moins évidente de ce contrôle, il est pour quand par rapport àif (isIE)
Cela renvoie
true
pour n'importe quelle version d'Internet Explorer:La
userAgent
paramètre est facultatif et il est par défaut le navigateur de l'utilisateur de l'agent.Vous pouvez utiliser le navigateur de l'objet à détecter l'utilisateur navigateur, vous n'avez pas besoin de jquery pour elle
http://www.javascriptkit.com/javatutors/navigator.shtml
C'est la façon dont le Angularjs équipe est de le faire (v 1.6.5):
Alors il y a plusieurs lignes de code, dispersés à travers l'utilisant comme un nombre tel que
et
document.documentMode
est pris en charge par IE8+. Il sera'undefined'
de Bord ou de Chrome/FireFox... . J'ai changé ce code pourvar IEver = window.document.documentMode || (window.attachEvent? 1 : 99);
telle qu'elle retourne exacte de la version de IE pour IE8+, 99 pour les non-IE navigateurs (il s'agit généralement d'un navigateur moderne), et 1 pour les vieux IE5-7. C'est écrit, parce que nous avons l'habitude de besoin spécial de ne travailler que pour certains anciens d'IE. Donc,if (IEver < 9) { ... }
signifie que si c'est un vieux IEEn utilisant les réponses ci-dessus; simple & condensés retournant un Booléen:
var isIE = /(MSIE|Trident\/|Edge\/)/i.test(navigator.userAgent);
Méthode 01:
$.navigateur est obsolète dans la version jQuery 1.3, et retiré en 1.9
Méthode 02:
Utiliser Les Commentaires Conditionnels
Méthode 03:
Méthode 04:
L'Utilisation De JavaScript/Manuel De Détection
Lien De Référence
.ie10
classe est l'une des meilleures options si vous faites un peu de css correctif pour ie10 seulement. Comme internet explorer 10 ajoute".ie10"
classe à l'élément HTML<html class="ie10">
, vous pouvez alors l'utiliser comme.ie10 .myclass {//some css here}
Je voulais juste vérifier si le navigateur IE11 ou plus âgés, parce que bien, ils sont de la merde.
À l'aide de modernizr
Encore un autre simple (mais lisible) fonction de détecter si le navigateur est IE ou pas (en ignorant Bord, ce qui n'est pas mauvais du tout):
Si vous ne souhaitez pas utiliser le useragent, vous pourriez tout aussi bien le faire pour vérifier si le navigateur est IE. Le code commenté en fait fonctionne dans internet explorer, les navigateurs et les tours de la "false" à "true".
Je sais que c'est une vieille question, mais au cas où quelqu'un vient à travers elle à nouveau et a des problèmes avec la détection des IE11, voici une solution qui fonctionne pour toutes les versions d'IE.
j'ai utilisé ce
Beaucoup de réponses ici, et je tiens à ajouter ma contribution. IE 11 était un tel cul concernant flexbox (voir toutes ses questions et les incohérences ici) que j'ai vraiment besoin d'un moyen facile de vérifier si un utilisateur est à l'aide de tout navigateur IE (jusqu'à et y compris 11), mais à l'exclusion du Bord, car Edge est en fait assez agréable.
Sur la base des réponses données ici, j'ai écrit une fonction simple retour d'un mondial variable booléenne que vous pouvez utiliser ensuite en bas de la ligne. Il est très facile de vérifier pour IE.
De cette façon, vous n'avez qu'à faire le regarder une fois, et stocker le résultat dans une variable, plutôt que d'avoir à chercher le résultat de chaque appel de fonction. (Autant que je sache, vous n'avez même pas à attendre pour le document de prêt à exécuter ce code que le user-agent n'est pas liée à la DOM.)
Essayer si vous utilisez la version jquery >=1.9,
Si vous utilisez la version jQuery <1.9 ($.navigateur a été supprimé en jQuery 1.9) utiliser le code suivant à la place:
Ou ce vraiment la version courte, retourne true si le navigateur est Internet Explorer:
@SpiderCode la solution ne fonctionne pas avec IE 11. Ici est la meilleure solution que j'ai utilisé désormais dans mon code où j'ai besoin de la détection du navigateur pour caractéristique particulière.
IE11 ne signale plus que MSIE, selon cette liste de changements, c'est intentionnel pour éviter les erreurs de détection.
Ce que vous pouvez faire si vous voulez vraiment savoir, c'est IE est de détecter le Trident/la chaîne de l'agent utilisateur si le navigateur.appName retourne Netscape, quelque chose comme (la non testé);
Grâce à cette réponse
Ci-dessous, j'ai trouvé moyen élégant de faire cela, tandis que googler ---
Mise à jour SpiderCode la réponse de résoudre les problèmes où la chaîne 'MSIE' renvoie -1, mais il correspond 'Trident'. Il sert à retourner NAN, mais maintenant, les retours de 11 pour cette version de IE.
Vous pouvez déctection tous les Internet Explorer (Dernière Version Testée 12).
Voir ici https://jsfiddle.net/v7npeLwe/
Vous devriez voir le résultat dans la console, veuillez utiliser chrome Inspecter.
J'ai placé ce code dans le document de prêt de la fonction et il déclenche uniquement dans internet explorer. Testé dans Internet Explorer 11.
Je pense que ça va vous aider à Ici
Ce seulement le travail ci-dessous IE 11 version.
console.log("version number",ie_version);
Fonction JavaScript pour détecter la version d'Internet Explorer ou de Bord de
Essayer de faire comme ceci
Vous pouvez utiliser
$.browser
pour obtenir le nom, le vendeur et informations de version.Voir http://api.jquery.com/jQuery.browser/