Quel est le moyen le moins sujet aux erreurs de cibler uniquement IE11 avec JavaScript?
Remarque: cela ne devrait être fait que pour des analyses ou pour informer l'utilisateur du navigateur utilisé. Pour tout le reste, il y a détection de fonctionnalités.
La chaîne d'agent d'utilisateur pour IE 11 est actuellement celle-ci:
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko
Exemple de Windows 10:
Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko
Ce qui signifie que vous pouvez simplement tester, pour les versions 11.xx,
var isIE11 = /Trident.*rv[ :]*11\./.test(navigator.userAgent);
Comme L'agent utilisateur IE10 était
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)
il est probablement aussi sûr de parier sur le fait que maintenant, Trident/X
est censé être le vrai versionning.
IE11 conserve "Trident" dans sa chaîne UA, mais abandonne MSIE. Un moyen simple de détecter le navigateur est IE11 ou une version ultérieure (IE12, IE13, etc.):
var isAtLeastIE11 = !!(navigator.userAgent.match(/Trident/) && !navigator.userAgent.match(/MSIE/));
Si vous voulez juste IE11 (et que vous ne voulez pas que les versions futures de IE correspondent], procédez comme suit:
var isIE11 = !!(navigator.userAgent.match(/Trident/) && navigator.userAgent.match(/rv[ :]11/));
var isIE11 = !!navigator.userAgent.match(/Trident\/7.0; rv 11/);
Source: http://www.nczonline.net/blog/2013/07/02/internet-Explorer-11-dont-call-me-ie/
Essaye ça,
navigator.sayswho= (function(){
var N= navigator.appName, ua= navigator.userAgent, tem;
var M= ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i);
if(M && (tem= ua.match(/version\/([\.\d]+)/i))!= null) M[2]= tem[1];
M= M? [M[1], M[2]]: [N, navigator.appVersion,'-?'];
return M;
})();
Source from Détection de navigateur en JavaScript?
Mis à jour pour IE = 11
Utilisez ceci
var isIE11 = navigator.userAgent.match(/Trident\/7.0; rv 11.0/);
Lisez ceci http://msdn.Microsoft.com/en-us/library/ie/bg182625%28v=vs.85%29.aspx
J'utilise le modèle suivant pour cibler tous les navigateurs IE. Vous pouvez le résumer si vous avez seulement besoin de IE 11.
/msie|trident|Edge/g.test(navigator.userAgent.toLowerCase());
Bonne chance!
Fredrik
Cela définira ie
à la version de IE, ou 0 si aucun. Cela fonctionnera de 1 à 11, mais ne détectera pas les versions futures si Microsoft abandonne le moteur Trident.
var ie = 0;
try { ie = navigator.userAgent.match( /(MSIE |Trident.*rv[ :])([0-9]+)/ )[ 2 ]; }
catch(e){}
Vous pouvez également être intéressé par ma réponse connexe plus détaillée ici .
Voici un script que vous pouvez utiliser pour détecter n'importe quel navigateur:
<script>
// Opera
var isOpera = (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
// Firefox 1.0+
var isFirefox = typeof InstallTrigger !== 'undefined';
// Safari 3.0+ "[object HTMLElementConstructor]"
var isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || safari.pushNotification);
// Internet Explorer 6-11
var isIE = /*@cc_on!@*/false || !!document.documentMode;
// Edge 20+
var isEdge = !isIE && !!window.StyleMedia;
// Chrome 1+
var isChrome = !!window.chrome && !!window.chrome.webstore;
// Blink engine detection
var isBlink = (isChrome || isOpera) && !!window.CSS;
if (isFirefox==true) {
alert(isFirefox)
$('.container-fluid').css({"overflow-y":"auto","height":"150%"});
}
</script>