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
Mais dans IE11, le jugement ci-dessus renvoie faux. J'ai testé le code suivant dans IE11 :
Le site officiel de Microsoft explique les différences entre ActiveXObject d'IE11.
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 :
É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 :
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.