web-dev-qa-db-fra.com

Détecter Internet Explorer 6 ou inférieur dans jQuery

Je suis nouveau sur jquery et je me demandais: est-ce un moyen simple de détecter si un navigateur est Internet Explorer 6 ou inférieur?

45
ine

Aussi simple que cela:

if($.browser.msie && $.browser.version=="6.0") alert("Im the annoying IE6");

Mise à jour

Veuillez noter que $. Browser est supprimé de jQuery 1.9

Si vous devez toujours utiliser $ .browser dans jQuery 1.9 (ou d'autres fonctions obsolètes), essayez jQuery-migrate ( https://github.com/jquery/jquery-migrate/ - http://code.jquery.com/jquery-migrate-1.2.1.js )

102
Aamir Afridi

Vous pouvez également demander directement IE.

<!--[if lte IE 6]>
<script type="text/javascript">
  var isRunningIE6OrBelow = true;
</script>
<![endif]-->
50
Alister Bulman

jQuery vérifie les fonctionnalités plutôt que les "navigateurs". Cela dit, vous pouvez utiliser la méthode jQuery.support pour détecter ce dont le navigateur des utilisateurs est capable.

Méthodes obsolètes (ne pas utiliser)

  • $ .browser
  • $ .browser.version
  • $ .boxModel

http://docs.jquery.com/Utilities/jQuery.support vous donnera un résumé des fonctionnalités prises en charge par quels navigateurs. En prenant ces données, vous développerez quelques vérifications conditionnelles pour déterminer si le navigateur utilisé est votre navigateur cible ou non.

16
Sampson
if ($.browser.msie && parseInt($.browser.version, 10) <= 6) {
  alert("I'm not dead yet!"); 
}

-- mise à jour

Veuillez noter que $. Browser est supprimé de jQuery 1.9

8
Mithun Sreedharan

Très belle façon de détecter IE est:

if ('v'=='\v') {
   welcome to IE )) 
}

Malheureusement, il ne peut pas reconnaître sa version mais ce n'est pas toujours nécessaire.

6
Roman

Si ActiveXObject existe et XMLHttpRequest n'existe pas, c'est IE6:

/* IE6 Check */
(!!window.ActiveXObject && !window.XMLHttpRequest) ? true : false;

Dans IE7, ce serait:

(!!window.ActiveXObject && !!window.XMLHttpRequest) ? true: false;

Références

5
Paul Sweatte

Je vérifie souvent la version d'un navigateur. La méthode .support est excellente, mais elle n'aide pas vraiment lorsque vous devez masquer des sélections en cas de superposition. Il n'y a pas de "supports sélectionne les contrôles fenêtrés". Vous avez juste besoin de vérifier la version du navigateur, donc je dirais que vous vous trompez vers la méthode .support où vous pouvez, et utilisez le .browser si nécessaire.

3
Paul Deen

En outre, un autre bon point est qu'avec JQuery, vous n'êtes pas censé vous soucier de la version.

Cela n'aide pas si vous utilisez jquery pour corriger un bogue de rendu css IE6.

3
user106427

Juste pour faire savoir aux gens que $ .browser.msie && /6.0/.test(navigator.userAgent) n'est pas fiable, je suis venu à cette question à la recherche d'une réponse à un problème avec le bgiframe JQuery qui se casse sur ma machine parce que je ai "Media Center PC 6.0" dans ma chaîne navigator.userAgent. J'ai maintenant édité la source pour utiliser le test $ browser.version.

Il est stupide de la part de JQuery de déconseiller ces tests de navigateur car aussi moche soit-il, ils sont nécessaires pour faire face à l'état moche de l'écosystème du navigateur.

1
James Ellis-Jones
1
mihau

http://docs.jquery.com/Utilities/jQuery.browser.version est de savoir comment

ÉDITÉ: lien corrigé de Douglas

http://api.jquery.com/jQuery.browser/#jQuery.browser.version

Je veux dire, si vous aviez l'ancienne version pas la dernière 1.3 ...

En outre, un autre bon point est qu'avec JQuery, vous n'êtes pas censé vous soucier de la version. JQuery fait des tests de fonctionnalités et gère tout ce qui est dérisoire pour vous. S'inquiéter des versions et des plates-formes est joli 1999

0
MrChrister

Essayez ceci:

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

si vous avez besoin de plus d'informations, reportez-vous à ceci:

http://docs.jquery.com/Utilities/jQuery.browser

0
Goku

"Bien qu'il soit peu probable que jQuery.browser soit supprimé, tous les efforts pour utiliser jQuery.support et une détection appropriée des fonctionnalités doivent être faits."

Alors je dis allez-y et utilisez-le. Ils doivent maintenir une compatibilité descendante avec les scripts qui utilisent toujours la méthode de reniflement de l'agent utilisateur.

0
user192502