J'appelle une fonction comme celle ci-dessous en cliquant sur divs avec une certaine classe.
Existe-t-il un moyen de vérifier au démarrage de la fonction si un utilisateur utilise Internet Explorer et de l'annuler / annuler s'il utilise d'autres navigateurs afin qu'elle ne fonctionne que pour les utilisateurs IE? Les utilisateurs ici seraient tous sur IE8 ou versions supérieures, donc je n'aurais pas besoin de couvrir IE7 et les versions inférieures.
Si je pouvais dire quel navigateur ils utilisent, ce serait bien mais ce n'est pas obligatoire.
Exemple de fonction:
$('.myClass').on('click', function(event)
{
// my function
});
javascript
jquery
internet-explorer
browser-detection
user2571510
la source
la source
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 se terminer à un moment donné et d'une manière ou d'une autre ...Réponses:
Utilisez ci-dessous la méthode JavaScript:
Vous pouvez trouver les détails sur le site de support Microsoft ci-dessous:
Comment déterminer la version du navigateur à partir du script
Mise à jour: (prise en charge IE 11)
la source
if (msie > 0)
est trompeuse. Si la valeur n'est pas trouvée, la fonction indexOf () renvoie -1 et non 0. Ceif (msie > -1)
serait donc plus explicatif.IE 11
: stackoverflow.com/a/21712356/114029/Edge\/|Trident\/|MSIE /.test(window.navigator.userAgent)
Je sais que cela fonctionne sur 10 et 11. Si vous pouvez vérifier <IE9 et Edge, modifiez la réponse.C'est plusieurs années plus tard, et le navigateur Edge utilise désormais Chromium comme moteur de rendu.
Malheureusement, la vérification d'IE 11 est toujours une chose.
Voici une approche plus simple, car les anciennes versions d'IE devraient disparaître.
Voici mon ancienne réponse (2014):
Dans Edge, la chaîne de l'agent utilisateur a changé.
Exemple d'utilisation:
Chaîne par défaut d'IE 10:
Chaîne par défaut d'IE 11:
Chaîne par défaut de Edge 12:
Chaîne par défaut de Edge 13 (thx @DrCord):
Chaîne par défaut de Edge 14:
Chaîne par défaut de Edge 15:
Chaîne par défaut de Edge 16:
Chaîne par défaut de Edge 17:
Chaîne par défaut de Edge 18 (aperçu d'initié):
Testez chez CodePen:
http://codepen.io/gapcode/pen/vEJNZN
la source
Si tout ce que vous voulez savoir, c'est si le navigateur est IE ou non, vous pouvez le faire:
Mise à jour 1: une meilleure méthode
Je le recommande maintenant. C'est toujours très lisible et c'est beaucoup moins de code :)
Merci à JohnnyFun dans les commentaires pour la réponse abrégée :)
Mise à jour 2: test pour IE en CSS
Tout d'abord, si vous le pouvez, vous devez utiliser des
@supports
instructions au lieu de JS pour vérifier si un navigateur prend en charge une certaine fonctionnalité CSS.(Notez qu'IE ne prend pas
@supports
du tout en charge et ignorera tous les styles placés à l'intérieur d'un@supports
instruction.)Si le problème ne peut pas être résolu,
@supports
vous pouvez le faire:(Remarque:
classList
est relativement nouveau pour JS et je pense que, parmi les navigateurs IE, il ne fonctionne que dans IE11. Peut-être aussi IE10.)Si vous utilisez SCSS (Sass) dans votre projet, cela peut être simplifié pour:
Mise à jour 3: ajout de Microsoft Edge (non recommandé)
Si vous souhaitez également ajouter Microsoft Edge à la liste, vous pouvez procéder comme suit. Cependant, je ne le recommande pas car Edge est un navigateur beaucoup plus compétent qu'IE.
la source
ms_ie = !!ua.match(/MSIE|Trident/)
~
il une signification?Cela revient
true
pour n'importe quelle version d'Internet Explorer:Le
userAgent
paramètre est facultatif et correspond par défaut à l'agent utilisateur du navigateur.la source
C'est ainsi que l'équipe Angularjs le fait ( v 1.6.5 ):
Ensuite, il y a plusieurs lignes de code dispersées tout au long de l'utiliser comme un nombre tel que
et
la source
document.documentMode
est pris en charge par IE8 +. Ce sera'undefined'
pour Edge ou Chrome / FireFox .... J'ai changé ce code pourvar IEver = window.document.documentMode || (window.attachEvent? 1 : 99);
qu'il renvoie la version exacte d'IE pour IE8 +, 99 pour les navigateurs non IE (généralement ce sera un navigateur moderne) et 1 pour l'ancien IE5-7. Ceci est écrit parce que nous avons généralement besoin d'un travail spécial uniquement pour certains IE plus anciens. Donc,if (IEver < 9) { ... }
si c'est un ancien IEVous pouvez utiliser l'objet navigateur pour détecter l'utilisateur-navigateur, vous n'avez pas besoin de jquery pour cela
http://www.javascriptkit.com/javatutors/navigator.shtml
la source
En utilisant les réponses ci-dessus; retour booléen simple et condensé:
var isIE = /(MSIE|Trident\/|Edge\/)/i.test(navigator.userAgent);
la source
Méthode 01:
$ .browser a été déconseillé dans jQuery version 1.3 et supprimé dans 1.9
Méthode 02: à l'
aide de commentaires conditionnels
Méthode 03:
Méthode 04:
utiliser JavaScript / détection manuelle
Lien de référence
la source
.ie10
classe est l'une des meilleures options si vous faites un correctif css pour ie10 uniquement. Comme Internet Explorer 10 ajoute de la".ie10"
classe à l'élément HTML<html class="ie10">
, vous pouvez ensuite l'utiliser comme.ie10 .myclass {//some css here}
Je voulais juste vérifier si le navigateur était IE11 ou plus ancien, car bon, ce sont des conneries.
la source
la source
Utilisation de modernizr
la source
Ou cette version vraiment courte, renvoie true si le navigateur est Internet Explorer:
la source
Encore une autre fonction simple (mais lisible par l'homme) pour détecter si le navigateur est IE ou non (en ignorant Edge, ce qui n'est pas mal du tout):
la source
Si vous ne souhaitez pas utiliser l'agent utilisateur, vous pouvez également le faire pour vérifier si le navigateur est IE. Le code commenté s'exécute réellement dans les navigateurs IE et transforme le "faux" en "vrai".
la source
Je sais que c'est une vieille question, mais au cas où quelqu'un le rencontrerait à nouveau et aurait des problèmes avec la détection d'IE11, voici une solution de travail pour toutes les versions actuelles d'IE.
la source
j'ai utilisé ça
la source
Beaucoup de réponses ici, et je voudrais ajouter ma contribution. IE 11 était un tel cul concernant la flexbox (voir tous ses problèmes et incohérences ici ) que j'avais vraiment besoin d'un moyen facile de vérifier si un utilisateur utilise un navigateur IE (jusqu'à 11 inclus) mais en excluant Edge, car Edge est en fait pas mal.
Sur la base des réponses données ici, j'ai écrit une fonction simple renvoyant une variable booléenne globale que vous pouvez ensuite utiliser sur toute la ligne. Il est très facile de vérifier IE.
De cette façon, vous ne devez effectuer la recherche qu'une seule fois et vous stockez le résultat dans une variable, plutôt que d'avoir à récupérer le résultat à chaque appel de fonction. (Pour autant que je sache, vous n'avez même pas besoin d'attendre que le document soit prêt à exécuter ce code car l'agent utilisateur n'est pas lié au DOM.)
la source
Essayez ceci si vous utilisez la version jquery> = 1.9 ,
Si vous utilisez jQuery version <1.9 ($ .browser a été supprimé dans jQuery 1.9), utilisez plutôt le code suivant:
la source
La solution de @ SpiderCode ne fonctionne pas avec IE 11. Voici la meilleure solution que j'utilise désormais dans mon code où j'ai besoin de la détection du navigateur pour une fonctionnalité particulière.
IE11 ne signale plus en tant que MSIE, selon cette liste de modifications, il est intentionnel d'éviter toute détection erronée.
Ce que vous pouvez faire si vous voulez vraiment savoir que c'est IE, c'est détecter le Trident / chaîne dans l'agent utilisateur si navigator.appName renvoie Netscape, quelque chose comme (le non testé);
Merci à cette réponse
la source
Ci-dessous, j'ai trouvé une manière élégante de le faire en recherchant sur Google ---
la source
Mettez à jour la réponse de SpiderCode pour résoudre les problèmes où la chaîne «MSIE» renvoie -1 mais correspond à «Trident». Il retournait NAN, mais renvoie maintenant 11 pour cette version d'IE.
la source
Vous pouvez détecter tout Internet Explorer (dernière version testée 12).
Voir ici https://jsfiddle.net/v7npeLwe/
la source
Vous devriez voir le résultat dans la console, veuillez utiliser Chrome Inspect.
la source
J'ai placé ce code dans la fonction de document prêt et il ne se déclenche que dans Internet Explorer. Testé dans Internet Explorer 11.
la source
Cela ne fonctionne que sous la version IE 11.
console.log("version number",ie_version);
la source
Fonction JavaScript pour détecter la version d'Internet Explorer ou Edge
la source
Nécromancement.
Afin de ne pas dépendre de la chaîne de l'agent utilisateur, vérifiez simplement quelques propriétés:
De plus, cela détecte le nouveau Chredge (Anaheim):
Et cela détecte le chrome:
Et ce Safari:
la source
Essayez de faire comme ça
la source
Je pense que cela vous aidera ici
la source
Vous pouvez utiliser
$.browser
pour obtenir des informations sur le nom, le fournisseur et la version.Voir http://api.jquery.com/jQuery.browser/
la source