Maison  >  Article  >  interface Web  >  JavaScript détermine le modèle de version d'IE_Connaissances de base

JavaScript détermine le modèle de version d'IE_Connaissances de base

WBOY
WBOYoriginal
2016-05-16 15:48:55990parcourir

Ce qui suit vous l'expliquera à travers le code. Veuillez voir ci-dessous pour plus de détails :

La différence entre le navigateur IE et le navigateur non-IE est que le navigateur IE prend en charge ActiveXObject, mais le navigateur non-IE ne prend pas en charge ActiveXObject. Avant l'apparition du navigateur IE11, c'était ainsi que nous jugions souvent IE et non-IE

Copier le code Le code est le suivant :

la fonction estIe(){
Renvoie window.ActiveXObject ? true : false;
>

Mais dans IE11, le jugement ci-dessus renvoie faux. J'ai testé le code suivant dans IE11 :

Copier le code Le code est le suivant :

alerte(window.ActiveXObject);
alert(typeof window.ActiveXObject);

Pourquoi est-ce ? Évidemment, ActiveXObject existe, mais le résultat de typeof est effectivement indéfini. Quiconque connaît le résultat peut me dire pourquoi ? Pour Shenma ?

Le site officiel de Microsoft explique les différences entre ActiveXObject d'IE11.

Copier le code Le code est le suivant :

alert("ActiveXObject" dans la fenêtre)//Renvoie vrai sous ie11

Ce qui suit est une méthode directe pour déterminer si les navigateurs IE et non-IE sont compatibles avec IE11.

Copier le code Le code est le suivant :

la fonction estIe(){
Retour ("ActiveXObject" dans la fenêtre);
>

Navigateur Judge IE6

À partir d'IE7, IE prend en charge l'objet XMLHttpRequest, mais IE6 ne le prend pas en charge. Sur la base de cette fonctionnalité et de la fonction précédente isIe() pour juger IE, nous savons comment juger IE6. La méthode de jugement est la suivante :

Copier le code Le code est le suivant :

fonction isIe6() {
// ie6 ne prend pas en charge window.XMLHttpRequest
Retour isIe() && !window.XMLHttpRequest;
>

Navigateur Juge IE7

Étant donné que le mode document est pris en charge à partir d'IE8, il prend en charge document.documentMode. IE7 ne le prend pas en charge, mais IE7 prend en charge l'objet XMLHttpRequest. La méthode de jugement est la suivante :

Copier le code Le code est le suivant :

fonction isIe7() {
//Seul IE8 prend en charge document.documentMode
Renvoie isIe() && window.XMLHttpRequest && !document.documentMode;
>

Navigateur Judge IE8

À partir d'IE9, Microsoft se rapproche lentement du standard. Nous appelons IE678 un navigateur non standard, et IE9 et d'autres navigateurs tels que Chrome et Firefox sont appelés navigateurs standard. L'une des différences entre les deux est alert(-[1,]);//Dans IE678, NaN est imprimé, mais dans les navigateurs standards, -1

Ensuite, nous pouvons juger qu'il s'agit d'un navigateur IE8 sur la base des différences ci-dessus. Voici comment procéder :

function isIe8(){
  // alert(!-[1,])//->IE678返回NaN 所以!NaN为true 标准浏览器返回-1 所以!-1为false
  return isIe() &&!-[1,]&&document.documentMode;
 }

Jugez les navigateurs IE9, IE10, IE11

Le navigateur prend en charge les objets intégrés JSON à partir d'IE8 et prend en charge le mode strict de js à partir d'IE10. Sous IE9, alert(!-[1,]) renvoie false. IE9 prend en charge addEventListener, mais le navigateur IE11 ne prend pas en charge la liaison d'événement d'origine attachEvent unique à IE. Sur la base de ces différences, nous pouvons distinguer les navigateurs IE9, IE10 et IE11.

Juger les autres navigateurs

//检测函数
 var check = function(r) {
   return r.test(navigator.userAgent.toLowerCase());
 };
 var statics = {
   /**
   * 是否为webkit内核的浏览器
   */
   isWebkit : function() {
     return check(/webkit/);
   },
   /**
   * 是否为火狐浏览器
   */
   isFirefox : function() {
     return check(/firefox/);
   },
   /**
   * 是否为谷歌浏览器
   */
   isChrome : function() {
     return !statics.isOpera() && check(/chrome/);
   },
   /**
   * 是否为Opera浏览器
   */   isOpera : function() {
     return check(/opr/);
   },
   /**
   * 检测是否为Safari浏览器
   */
   isSafari : function() {
   // google chrome浏览器中也包含了safari
     return !statics.isChrome() && !statics.isOpera() && check(/safari/)
   }
 };

Ce qui précède est l’introduction complète de cet article, j’espère qu’il pourra aider tout le monde.

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn