C'est plusieurs années plus tard, et le Le navigateur Edge utilise désormais Chromium comme moteur de rendu.
La vérification pour IE 11 est toujours d'actualité, malheureusement.
Voici une approche plus directe, car les anciennes versions d'IE devraient avoir disparu.
if (window.document.documentMode) {
// Do IE stuff
}
Voici mon ancienne réponse (2014) :
Dans Edge, le User Agent String a changé.
/**
* detect IEEdge
* returns version of IE/Edge or false, if browser is not a Microsoft browser
*/
function detectIEEdge() {
var ua = window.navigator.userAgent;
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 => return version number
return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
}
// other browser
return false;
}
Exemple d'utilisation :
alert('IEEdge ' + detectIEEdge());
Chaîne par défaut d'IE 10 :
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)
Chaîne par défaut d'IE 11 :
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko
Chaîne par défaut de Edge 12 :
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
Chaîne par défaut de l'Edge 13 (thx @DrCord) :
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
Chaîne par défaut de Edge 14 :
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/14.14300
Chaîne par défaut de Edge 15 :
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063
Chaîne par défaut de Edge 16 :
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299
Chaîne par défaut de Edge 17 :
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134
Chaîne par défaut de Edge 18 (Insider preview) :
Mozilla/5.0 (Windows NT 10.0; Win64; x64; ServiceUI 14) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17730
Test à CodePen :
http://codepen.io/gapcode/pen/vEJNZN
0 votes
Voici de nombreux exemples : stackoverflow.com/questions/2400935/
1 votes
Utilisez modernizer pour détecter IE ou d'autres navigateurs. stackoverflow.com/questions/13478303/
0 votes
Veuillez noter qu'avec le développement web moderne, la détection des navigateurs est une mauvaise pratique.
7 votes
D'après les normes modernes de développement web, c'est une mauvaise pratique que de développer pour les anciennes versions d'IE pour commencer.
11 votes
En fait, cette "mauvaise pratique" est imposée par les normes elles-mêmes, donc ce n'est pas la faute du développeur... Les navigateurs fonctionnent différemment et les spécifications sont trop souples sur les questions de mise en œuvre. Pour faire quelque chose qui n'est pas bogué et qui n'est pas ennuyeux comme l'enfer, on peut faire ce qui suit a pour faire la détection du navigateur. Je suggère une autre meilleure pratique :
With modern web development, it's bad practice to support non-Chromium-based browsers (with Safari not considered to be Chromium-based at all)
. Désolé, mais cette folie doit prendre fin à un moment donné et d'une manière ou d'une autre...3 votes
La meilleure pratique aujourd'hui est de faire de la "détection de fonctionnalité" plutôt que de la "détection de navigateur". Demandez plutôt si le navigateur fait ce dont vous avez besoin.
2 votes
@ChrisRogers - Cela semble très bien et tout, mais si vous devez ajouter des styles en ligne à cause d'une bogue dans la façon dont IE mesure la taille des éléments enfants d'un élément flexbox alors oui... vous avez besoin de la détection du navigateur.
0 votes
@JDB - Eh bien euh oui, bien sûr. Je ne pense pas que quiconque établisse des lois absolues ici. Je m'en tiens toujours au conseil de ce qui est de préférence . De plus, l'exemple donné par le PO n'implique pas nécessairement qu'il est sur le point d'écrire un hack CSS. À première vue, il semble raisonnablement probable qu'il soit sur le point d'appeler une fonction javascript.
2 votes
@Chris - mes excuses... je voulais que cela ait un ton plus plaisantin. Je vais reprocher à IE d'avoir volé ma joie et de m'avoir laissé avec de l'amertume et de la frustration :)
2 votes
@JDB - pas d'inquiétude à avoir. IE (alias "l'assassin de la joie au visage de lune") a éteint plus d'une âme :-)
1 votes
Construisez quelque chose de cool ! Est-ce que ça marche ? Non ?! Voilà, c'est un IE.
0 votes
@Rosseyn Selon les normes de développement modernes, c'est une mauvaise pratique que d'utiliser une application aussi mauvaise qu'IE pour commencer. Néanmoins, la pandémie qu'est IE est éternelle. Tant que les clients seront trop naïfs pour utiliser autre chose, notre travail consistera à les satisfaire malgré le carnage qui s'ensuit.
1 votes
Peut-on supprimer "avec jQuery" du titre de la question pour qu'il soit simplement indiqué "Vérifier si l'utilisateur utilise IE" ? Les meilleures réponses dans ce fil de discussion ne nécessitent pas de jQuery et c'est le premier résultat dans Google si vous tapez "vérifier si IE". La présence de jQuery dans le titre pourrait détourner certaines personnes de la question.
0 votes
J'ai oublié que j'ai les droits d'édition