Je sais que IE 11 a une chaîne d'agent utilisateur différente de celle de tous les autres IE
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko
J'ai essayé de détecter IE 11 avec la réponse spécifiée pour cette question '
Jquery n'a pas réussi à détecter IE 11
C'est !!navigator.userAgent.match(/Trident\/7\./)
Mais je reçois une erreur Object not found and needs to be re-evaluated.
Ensuite, j'ai ouvert la console du développeur dans IE11 et essayé d'accéder à certains objets JavaScript prédéfinis. Je reçois toujours la même erreur.
J'ai essayé
navigator.userAgent
window.navigator
console.log('test');
Quelqu'un a une idée à ce sujet?
Éditer 18 nov 2016
Ce code fonctionne également ( pour ceux qui préfèrent une autre solution, sans utiliser ActiveX )
var isIE11 = !!window.MSInputMethodContext && !!document.documentMode;
// true on IE11
// false on Edge and other IEs/browsers.
Réponse originale
Pour vérifier Ie11, vous pouvez utiliser ceci: (testé)
(ou courir this )
!(window.ActiveXObject) && "ActiveXObject" in window
J'ai tous les VMS de IE:
Remarque: cela ne fonctionnera pas pour IE11:
comme vous pouvez le voir ici, cela retourne vrai:
Alors, que pouvons-nous faire :
Apparemment, ils ont ajouté l'espace de la machine:
ie11:
"Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; rv:11.0) like Gecko"
ie12:
"Mozilla/5.0 (Windows NT 6.3; Win64; x64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; rv:11.0) like Gecko"
afin que nous puissions faire:
/x64|x32/ig.test(window.navigator.userAgent)
cela ne retournera vrai que pour ie11.
Pour détecter rapidement MSIE (de la version 6 à la version 11):
if(navigator.userAgent.indexOf('MSIE')!==-1
|| navigator.appVersion.indexOf('Trident/') > -1){
/* Microsoft Internet Explorer detected in. */
}
Toutes les réponses ci-dessus ignorent le fait que vous mentionnez que vous n'avez ni fenêtre ni navigateur
Puis j'ai ouvert la console de développement dans IE11
et c'est où il est dit
Objet non trouvé et doit être réévalué.
et navigateur, fenêtre, console, aucun d’eux n’existe et doit être réévalué. J'ai eu cela en émulation. fermez et ouvrez la console plusieurs fois.
J'utilise la fonction suivante pour détecter les versions 9, 10 et 11 d'IE:
function ieVersion() {
var ua = window.navigator.userAgent;
if (ua.indexOf("Trident/7.0") > -1)
return 11;
else if (ua.indexOf("Trident/6.0") > -1)
return 10;
else if (ua.indexOf("Trident/5.0") > -1)
return 9;
else
return 0; // not IE9, 10 or 11
}
Et comment j'ai implémenté cela
<script type="text/javascript">
!(window.ActiveXObject) && "ActiveXObject"
function isIE11(){
return !!navigator.userAgent.match(/Trident.*rv[ :]*11\./);
}
</script>
Ce lien était utile . Il contient le code javascript permettant de détecter toutes les versions de IE jusqu'à IE11. J'ai testé le script avec l'émulateur IE11. Pour trouver l'émulateur IE11, cliquez sur le navigateur avec le bouton droit de la souris, puis sélectionnez "Inspecter l'élément". En bas à gauche de la page, faites défiler la barre de navigation et cliquez sur l'icône du bureau. La liste déroulante "User Agent String" contient les options permettant d'émuler IE6-11.
Ça marche. Je viens de l'utiliser quelques minutes avant d'écrire cette réponse. Impossible de poster des instantanés - pas assez de réputation.
Ceci est le code - suivez le lien pour le visualiser à nouveau:
// Get IE or Edge browser version
var version = detectIE();
if (version === false) {
document.getElementById('result').innerHTML = '<s>IE/Edge</s>';
} else if (version >= 12) {
document.getElementById('result').innerHTML = 'Edge ' + version;
} else {
document.getElementById('result').innerHTML = 'IE ' + version;
}
// add details to debug result
document.getElementById('details').innerHTML = window.navigator.userAgent;
/**
* detect IE
* returns version of IE or false, if browser is not Internet Explorer
*/
function detectIE() {
var ua = window.navigator.userAgent;
// Test values; Uncomment to check result …
// IE 10
// ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)';
// IE 11
// ua = 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko';
// Edge 12 (Spartan)
// ua = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0';
// Edge 13
// ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586';
var msie = ua.indexOf('MSIE ');
if (msie > 0) {
// IE 10 or older => return version number
return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
}
var trident = ua.indexOf('Trident/');
if (trident > 0) {
// IE 11 => return version number
var rv = ua.indexOf('rv:');
return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
}
var Edge = ua.indexOf('Edge/');
if (Edge > 0) {
// Edge (IE 12+) => return version number
return parseInt(ua.substring(Edge + 5, ua.indexOf('.', Edge)), 10);
}
// other browser
return false;
}
@import url(https://fonts.googleapis.com/css?family=Fira+Mono|Fira+Sans:300);
body {
color: black;
background-color: white;
font-family: "Fira Sans", sans-serif;
font-weight: 300;
margin: 0;
padding: 3rem;
}
h1 {
color: darkgrey;
text-align: center;
font-weight: 300;
font-size: 1.5rem;
line-height: 2rem;
}
h2 {
text-align: center;
font-weight: 300;
font-size: 4rem;
}
p {
color: darkgrey;
text-align: center;
font-family: "Fira Mono", monospace;
font-size: 1rem;
line-height: 1.5rem;
}
<h1>Detect IE/Edge version with JavaScript.<br> Updated to recognize Internet Explorer 12+ aka Edge.</h1>
<h2 id="result">detecting…</h2>
<p id="details">n/a</p>
if(window.msCrypto) { /* I'm IE11 for sure */ }
Par défaut, IE11 bloque la possibilité d'utiliser ActiveX. Donc, ce code ne fonctionnera pas tant que l'utilisateur n'aura pas répondu en acceptant d'exécuter le script.
Okay essayer ceci, simple et pour IE11 et IE version 11 ci-dessous
browserIsIE = navigator.userAgent.toUpperCase().indexOf("TRIDENT/") != -1 || navigator.userAgent.toUpperCase().indexOf("MSIE") != -1;
navigator.userAgent.toUpperCase().indexOf("TRIDENT/") != -1
pour IE 11 version navigator.userAgent.toUpperCase().indexOf("MSIE") != -1
pour IE version inférieure à 11
browserIsIE = navigator.userAgent.toUpperCase().indexOf("TRIDENT/") != -1 || navigator.userAgent.toUpperCase().indexOf("MSIE") != -1;
console.log('Is IE Browser : '+ browserIsIE)
Une façon assez concise de détecter IE 11 uniquement est la suivante:
if(window.msCrypto) { /* I'm IE11 for sure */ }
ou
var IE11= !!window.msCrypto;
msCrypto
est une version préfixée de l'objet window.crypto
et implémentée uniquement dans IE 11.
https://developer.mozilla.org/en-US/docs/Web/API/Window/crypto
J'ai trouvé que IE11 donnait plus d'une chaîne d'agent utilisateur dans différents environnements.
Au lieu de s'appuyer sur MSIE
et d'autres approches, il vaut mieux s'appuyer sur Trident
version
const isIE11 = userAgent => userAgent.match(/Trident\/([\d.]+)/) ? +userAgent.match(/Trident\/([\d.]+)/)[1] >= 7;
J'espère que cela t'aides :)
Utiliser cette RegExp semble fonctionner pour IE 10 et IE 11:
function isIE(){
return /Trident\/|MSIE/.test(window.navigator.userAgent);
}
Je n'ai pas de IE plus ancien que IE 10 pour tester cela.