Déterminez si le navigateur IE utilise window.navigator.userAgent. Suivez ces informations et constatez que dans l'environnement de développement, elles sont reconnues comme IE10, mais lors de l'accès au serveur, elles sont reconnues comme IE11, mais il n'y a pas de marque MSIE. dans le userAgent d'IE11 La raison est que ça y est.
Changez simplement la méthode de jugement du navigateur IE comme suit.
function isIE() { //ie? if (!!window.ActiveXObject || "ActiveXObject" in window) return true; else return false; }
Voici quelques partages, vous pouvez y jeter un oeil, analyse et explication très pratiques
Dans de nombreux cas, nous utilisons généralement navigator.userAgent et des expressions régulières pour déterminer la version du navigateur IE. Voici une introduction à l'utilisation de différentes fonctionnalités du navigateur IE pour déterminer le navigateur IE
.1 Déterminer le navigateur IE et le navigateur non-IE
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
function isIe(){ return window.ActiveXObject ? true : false; }
Mais dans IE11, le jugement ci-dessus renvoie faux. J'ai moi-même testé le code suivant dans IE11
.Le résultat est
Pourquoi ça ? É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. http://msdn.microsoft.com/en-us/library/ie/dn423948(v=vs.85).aspx. Mais la raison de ce type n’est pas expliquée. Ce n'est pas grave si nous utilisons le code suivant pour détecter
alert("ActiveXObject" dans la fenêtre)//Renvoie false sous ie11
C'est encore ce que je ne comprends pas. "ActiveXObject" dans la fenêtre renvoie vrai. Pourquoi le code utilisé pour juger le navigateur IE a-t-il renvoyé faux dans IE11 ? Encore une fois, je prie les experts de me donner une explication. Merci
Ce qui suit est une méthode directe pour déterminer si les navigateurs IE et non-IE sont compatibles avec IE11.
function isIe(){ return ("ActiveXObject" in window); }
Notez que la condition préalable est de ne pas écraser ActiveXObject dans notre code de programme. Aucun programme ne devrait le faire. héhé.
2 Déterminer le navigateur 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
function isIe6() { // ie6是不支持window.XMLHttpRequest的 return isIe() && !window.XMLHttpRequest; }
3 Déterminer le navigateur 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
function isIe7() { //只有IE8+才支持document.documentMode return isIe() && window.XMLHttpRequest && !document.documentMode; }
4 Déterminer le navigateur 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. Veuillez tester le code suivant. Ce qui est retourné
alert(-[1,]);//Ce qui est imprimé dans IE678 est NaN, mais ce qui est imprimé dans les navigateurs standards est -1
Ensuite, nous pouvons juger qu'il s'agit d'un navigateur IE8 sur la base des différences ci-dessus. La méthode est la suivante
function isIe8(){ // alert(!-[1,])//->IE678返回NaN 所以!NaN为true 标准浏览器返回-1 所以!-1为false return isIe() &&!-[1,]&&document.documentMode; }
5 Déterminer les navigateurs IE9, IE10, IE11
Le navigateur prend en charge les objets intégrés JSON d'IE8 et prend en charge le mode strict de js à partir d'IE10. Veuillez vous référer à cet article pour le mode strict dans JShttp://www.jb51.net/article. /75037 .htm
Alert(!-[1,]) sous IE9 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.
6 Déterminer 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/); } };
Comment js détermine-t-il la version du navigateur IE, y compris IE11
<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.jb51.net/" /> <title>脚本之家</title> <script type="text/javascript"> var userAgent = navigator.userAgent, rMsie = /(msie\s|trident.*rv:)([\w.]+)/, rFirefox = /(firefox)\/([\w.]+)/, rOpera = /(opera).+version\/([\w.]+)/, rChrome = /(chrome)\/([\w.]+)/, rSafari = /version\/([\w.]+).*(safari)/; var browser; var version; var ua = userAgent.toLowerCase(); function uaMatch(ua){ var match = rMsie.exec(ua); if(match != null){ return { browser : "IE", version : match[2] || "0" }; } var match = rFirefox.exec(ua); if (match != null) { return { browser : match[1] || "", version : match[2] || "0" }; } var match = rOpera.exec(ua); if (match != null) { return { browser : match[1] || "", version : match[2] || "0" }; } var match = rChrome.exec(ua); if (match != null) { return { browser : match[1] || "", version : match[2] || "0" }; } var match = rSafari.exec(ua); if (match != null) { return { browser : match[2] || "", version : match[1] || "0" }; } if (match != null) { return { browser : "", version : "0" }; } } var browserMatch = uaMatch(userAgent.toLowerCase()); if (browserMatch.browser){ browser = browserMatch.browser; version = browserMatch.version; } document.write(browser+version); </script> </script> </head> <body> </body> </html>
Le code ci-dessus implémente la fonction de jugement. Voici une introduction à son principe de mise en œuvre. J'espère qu'il pourra aider les amis dans le besoin.
Regardons d'abord un morceau de code :
navigator.userAgent
Capture d'écran des informations sous IE11 :
Utilisez ensuite l'expression régulière correspondante pour faire correspondre. Il existe encore de grandes différences entre IE11 et les versions précédentes du navigateur. Dans la version précédente, ces informations contenaient msie, mais elles ne figurent plus dans IE11 et Trident est nouvellement ajouté, suivi du numéro de version du navigateur. ce.