Vérifier si L'utilisateur utilise IE avec jQuery

j'appelle une fonction comme celle ci-dessous en cliquant sur divs avec une certaine classe.

y a-t-il un moyen que je puisse vérifier lors du démarrage de la fonction si un utilisateur utilise Internet Explorer et avorter / annuler s'ils utilisent d'autres navigateurs de sorte qu'il ne fonctionne que pour les utilisateurs IE ? Les utilisateurs ici seraient tous sur les versions IE8 ou supérieures donc je n'aurais pas besoin de couvrir les versions IE7 et inférieures.

Si je pouvais dire quel navigateur ils utilisent qui serait être grande, mais n'est pas nécessaire.

exemple de fonction:

$('.myClass').on('click', function(event)
{
    // my function
});
280
demandé sur Shaddy 2013-11-15 14:53:42

27 réponses

utiliser la méthode JavaScript ci-dessous:

function msieversion() 
{
    var ua = window.navigator.userAgent;
    var msie = ua.indexOf("MSIE ");

    if (msie > 0) // If Internet Explorer, return version number
    {
        alert(parseInt(ua.substring(msie + 5, ua.indexOf(".", msie))));
    }
    else  // If another browser, return 0
    {
        alert('otherbrowser');
    }

    return false;
}

vous pouvez trouver les détails sur le site de soutien de Microsoft ci-dessous:

comment déterminer la version du navigateur à partir du script

mise à Jour : (IE 11)

function msieversion() {

    var ua = window.navigator.userAgent;
    var msie = ua.indexOf("MSIE ");

    if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./))  // If Internet Explorer, return version number
    {
        alert(parseInt(ua.substring(msie + 5, ua.indexOf(".", msie))));
    }
    else  // If another browser, return 0
    {
        alert('otherbrowser');
    }

    return false;
}
369
répondu SpiderCode 2016-03-11 04:27:21

à partir D'Internet Explorer 12+ (alias Edge), le User Agent String a changé, une fois de plus.

/**
 * detect IE
 * returns version of IE or false, if browser is not Internet Explorer
 */
function detectIE() {
    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 (IE 12+) => return version number
       return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
    }

    // other browser
    return false;
}

exemple d'utilisation:

alert('IE ' + detectIE());

chaîne par défaut de IE 10:

Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)

chaîne par défaut de IE 11:

Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko 

chaîne par défaut de IE 12 (Alias Edge):

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 bord 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 bord 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 bord 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 bord 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 bord 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 

Essai au CodePen:

http://codepen.io/gapcode/pen/vEJNZN

462
répondu Mario 2018-09-06 12:29:57

ajoute juste à la réponse très utile de Mario.

si tout ce que vous voulez savoir est si le navigateur est IE ou non, le code peut être simplifié à juste:

var ms_ie = false;
var ua = window.navigator.userAgent;
var old_ie = ua.indexOf('MSIE ');
var new_ie = ua.indexOf('Trident/');

if ((old_ie > -1) || (new_ie > -1)) {
    ms_ie = true;
}

if ( ms_ie ) {
    //IE specific code goes here
}

mise à Jour

je le recommande maintenant. Il est toujours très lisible et qu'il est loin moins de code :)

var ua = window.navigator.userAgent;
var is_ie = /MSIE|Trident/.test(ua);

if ( is_ie ) {
  //IE specific code goes here
}

merci à JohnnyFun dans les commentaires pour la réponse abrégée:)

62
répondu Daniel Tonon 2018-08-13 09:18:42

retourne true pour n'importe quelle version d'Internet Explorer:

function isIE(userAgent) {
  userAgent = userAgent || navigator.userAgent;
  return userAgent.indexOf("MSIE ") > -1 || userAgent.indexOf("Trident/") > -1 || userAgent.indexOf("Edge/") > -1;
}

le paramètre userAgent est optionnel et par défaut à l'agent utilisateur du navigateur.

44
répondu bendytree 2016-05-26 19:55:42

vous pouvez utiliser l'objet navigator pour détecter user-navigator, vous n'avez pas besoin de jquery pour cela

<script type="text/javascript">

if (/MSIE (\d+\.\d+);/.test(navigator.userAgent) || navigator.userAgent.indexOf("Trident/") > -1 ){ 

 // do stuff with ie-users
}

</script>

http://www.javascriptkit.com/javatutors/navigator.shtml

24
répondu john Smith 2017-03-17 08:09:15

Voici comment L'équipe Angularjs s'y prend ( v 1.6.5 ):

var msie, // holds major version number for IE, or NaN if UA is not IE.

// Support: IE 9-11 only
/**
 * documentMode is an IE-only property
 * http://msdn.microsoft.com/en-us/library/ie/cc196988(v=vs.85).aspx
 */
msie = window.document.documentMode;

puis il y a plusieurs lignes de code dispersées dans l'utilisation comme un nombre tel que

if (event === 'input' && msie <= 11) return false;

et

if (enabled && msie < 8) {
14
répondu ThisClark 2018-01-23 20:13:52

en Utilisant les réponses ci-dessus; simple & résumés retournant un Booléen:

var isIE = /(MSIE|Trident\/|Edge\/)/i.test(navigator.userAgent);

10
répondu gdibble 2015-11-18 01:12:57

méthode 01:

$.navigateur a été déprécié dans jQuery version 1.3 et supprimé dans 1.9

if ( $.browser.msie) {
  alert( "Hello! This is IE." );
}

méthode 02:

Utiliser Les Commentaires Conditionnels

<!--[if gte IE 8]>
<p>You're using a recent version of Internet Explorer.</p>
<![endif]-->

<!--[if lt IE 7]>
<p>Hm. You should upgrade your copy of Internet Explorer.</p>
<![endif]-->

<![if !IE]>
<p>You're not using Internet Explorer.</p>
<![endif]>

méthode 03:

 /**
 * Returns the version of Internet Explorer or a -1
 * (indicating the use of another browser).
 */
function getInternetExplorerVersion()
{
    var rv = -1; // Return value assumes failure.

    if (navigator.appName == 'Microsoft Internet Explorer')
    {
        var ua = navigator.userAgent;
        var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
        if (re.exec(ua) != null)
            rv = parseFloat( RegExp. );
    }

    return rv;
}

function checkVersion()
{
    var msg = "You're not using Internet Explorer.";
    var ver = getInternetExplorerVersion();

    if ( ver > -1 )
    {
        if ( ver >= 8.0 ) 
            msg = "You're using a recent copy of Internet Explorer."
        else
            msg = "You should upgrade your copy of Internet Explorer.";
    }

    alert( msg );
}

méthode 04:

Utiliser JavaScript / Détection Manuelle

/*
     Internet Explorer sniffer code to add class to body tag for IE version.
     Can be removed if your using something like Modernizr.
 */
 var ie = (function ()
 {

     var undef,
     v = 3,
         div = document.createElement('div'),
         all = div.getElementsByTagName('i');

     while (
     div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i>< ![endif]-->',
     all[0]);

     //append class to body for use with browser support
     if (v > 4)
     {
         $('body').addClass('ie' + v);
     }

 }());

Lien De Référence

9
répondu Aamir Shahzad 2014-09-11 17:34:54
function detectIE() {
    var ua = window.navigator.userAgent;
    var ie = ua.search(/(MSIE|Trident|Edge)/);

    return ie > -1;
}
6
répondu headione 2017-02-21 16:27:56

à l'Aide de modernizr

Modernizr.addTest('ie', function () {
    var ua = window.navigator.userAgent;
    var msie = ua.indexOf('MSIE ') > 0;
    var ie11 = ua.indexOf('Trident/') > 0;
    var ie12 = ua.indexOf('Edge/') > 0;
    return msie || ie11 || ie12;
});
4
répondu kevnk 2015-06-02 20:31:35

si vous ne voulez pas utiliser le useragent, vous pouvez aussi simplement le faire pour vérifier si le navigateur est IE. Le code commenté s'exécute en fait dans les navigateurs IE et tourne le "false" EN "true".

var isIE = /*@cc_on!@*/false;
if(isIE){
    //The browser is IE.
}else{
    //The browser is NOT IE.
}   
3
répondu dev4life 2014-08-15 15:37:52

je sais que c'est une vieille question, mais au cas où quelqu'un tombe dessus à nouveau et a des problèmes avec la détection de IE11, voici une solution de travail pour toutes les versions actuelles de IE.

var isIE = false;
if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {
    isIE = true;   
}
3
répondu Ty Bailey 2015-04-09 15:17:54

j'ai utilisé ce

function notIE(){
    var ua = window.navigator.userAgent;
    if (ua.indexOf('Edge/') > 0 || 
        ua.indexOf('Trident/') > 0 || 
        ua.indexOf('MSIE ') > 0){
       return false;
    }else{
        return true;                
    }
}
3
répondu Jop Knoppers 2016-11-10 20:00:28

encore une autre fonction simple (mais lisible par l'homme) pour détecter si le navigateur est IE ou non (ignorant Edge, qui n'est pas mauvais du tout):

function isIE() {
  var ua = window.navigator.userAgent;
  var msie = ua.indexOf('MSIE '); // IE 10 or older
  var trident = ua.indexOf('Trident/'); //IE 11

  return (msie > 0 || trident > 0);
}
3
répondu Chuck Le Butt 2018-03-05 01:10:50

essayez ceci si vous utilisez version jquery >=1.9 ,

var browser;
jQuery.uaMatch = function (ua) {
    ua = ua.toLowerCase();

    var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
        /(webkit)[ \/]([\w.]+)/.exec(ua) ||
        /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
        /(msie) ([\w.]+)/.exec(ua) || 
        ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
       /(Trident)[\/]([\w.]+)/.exec(ua) || [];

    return {
        browser: match[1] || "",
        version: match[2] || "0"
    };
};
// Don't clobber any existing jQuery.browser in case it's different
if (!jQuery.browser) {
    matched = jQuery.uaMatch(navigator.userAgent);
    browser = {};

    if (matched.browser) {
        browser[matched.browser] = true;
        browser.version = matched.version;
    }

    // Chrome is Webkit, but Webkit is also Safari.
    if (browser.chrome) {
        browser.webkit = true;
    } else if (browser.webkit) {
        browser.safari = true;
    }

    jQuery.browser = browser;
}

Si l'aide de version jQuery <1.9 (en$.le navigateur a été supprimé dans jQuery 1.9) utilisez le code suivant à la place:

$('.myClass').on('click', function (event) {
    if ($.browser.msie) {
        alert($.browser.version);
    }
});
2
répondu Rohan Kumar 2016-07-06 09:13:10

la solution de @SpiderCode ne fonctionne pas avec IE 11. Voici la meilleure solution que j'ai utilisée désormais dans mon code où j'ai besoin de détection de navigateur pour une fonctionnalité particulière.

IE11 ne déclare plus en tant que MSIE, selon cette liste de modifications, il est intentionnel d'éviter la détection erronée.

ce que vous pouvez faire si vous voulez vraiment savoir que C'est IE est de détecter le Trident/ string dans l'agent utilisateur si navigator.appName retourne Netscape, quelque chose comme (non testé);

merci à cette réponse

function isIE()
{
  var rv = -1;
  if (navigator.appName == 'Microsoft Internet Explorer')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp. );
  }
  else if (navigator.appName == 'Netscape')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp. );
  }
  return rv == -1 ? false: true;
}
1
répondu AnujKu 2017-05-23 10:31:38

ci-dessous, j'ai trouvé une façon élégante de le faire tout en googler - - -

/ detect IE
var IEversion = detectIE();

if (IEversion !== false) {
  document.getElementById('result').innerHTML = 'IE ' + IEversion;
} else {
  document.getElementById('result').innerHTML = 'NOT IE';
}

// 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';

  // IE 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 (IE 12+)
  // 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;
}
1
répondu Rameshwar Vyevhare 2016-01-21 07:09:40

beaucoup de réponses ici, et j'aimerais ajouter ma contribution. IE 11 était un tel cul concernant flexbox (voir tous ses problèmes et incohérences ici ) que j'avais vraiment besoin d'un moyen facile de vérifier si un utilisateur utilise un navigateur IE (jusqu'à et y compris 11) mais à L'exclusion de Edge, parce que Edge est en fait assez agréable.

basé sur les réponses données ici, j'ai écrit une fonction simple retournant une variable booléenne globale que vous pouvez ensuite utiliser vers le bas de la ligne. Il est très facile de vérifier pour IE.

var isIE;
(function() {
    var ua = window.navigator.userAgent,
        msie = ua.indexOf('MSIE '),
        trident = ua.indexOf('Trident/');

    isIE = (msie > -1 || trident > -1) ? true : false;
})();

if (isIE) {
    alert("I am an Internet Explorer!");
}

de cette façon, vous ne devez faire la recherche qu'une seule fois, et vous stockez le résultat dans une variable, plutôt que d'avoir à récupérer le résultat sur chaque appel de fonction. (Pour autant que je sache, vous n'avez même pas à attendre le document prêt à exécuter ce code car l'agent-utilisateur n'est pas lié au DOM.)

1
répondu Bram Vanroy 2016-05-25 15:19:35

mise à Jour SpiderCode la réponse de résoudre les problèmes où la chaîne 'MSIE' renvoie -1, mais il correspond 'Trident'. Il retournait NAN, mais retourne maintenant 11 pour cette version D'IE.

   function msieversion() {
       var ua = window.navigator.userAgent;
       var msie = ua.indexOf("MSIE ");
       if (msie > -1) {
           return ua.substring(msie + 5, ua.indexOf(".", msie));
       } else if (navigator.userAgent.match(/Trident.*rv\:11\./)) {
           return 11;
       } else {
           return false;
       }
    }
1
répondu JeremyS 2017-05-05 19:56:15

vous pouvez dectecter Tous Internet Explorer (dernière Version testée 12).

<script>
    var $userAgent = '';
    if(/MSIE/i['test'](navigator['userAgent'])==true||/rv/i['test'](navigator['userAgent'])==true||/Edge/i['test'](navigator['userAgent'])==true){
       $userAgent='ie';
    } else {
       $userAgent='other';
    }

    alert($userAgent);
</script>

voir ici https://jsfiddle.net/v7npeLwe /

0
répondu Rogerio de Moraes 2015-07-02 13:16:45
function msieversion() {
var ua = window.navigator.userAgent;
console.log(ua);
var msie = ua.indexOf("MSIE ");

if (msie > -1 || navigator.userAgent.match(/Trident.*rv:11\./)) { 
    // If Internet Explorer, return version numbe
    // You can do what you want only in IE in here.
    var version_number=parseInt(ua.substring(msie + 5, ua.indexOf(".", msie)));
    if (isNaN(version_number)) {
        var rv_index=ua.indexOf("rv:");
        version_number=parseInt(ua.substring(rv_index+3,ua.indexOf(".",rv_index)));
    }
    console.log(version_number);
} else {       
    //other browser   
    console.log('otherbrowser');
}
}

vous devriez voir le résultat dans la console, s'il vous plaît utiliser chrome inspecter.

0
répondu linjie 2016-01-07 07:16:14

j'ai placé ce code dans la fonction document ready et il ne se déclenche que dans internet explorer. Testé dans Internet Explorer 11.

var ua = window.navigator.userAgent;
ms_ie = /MSIE|Trident/.test(ua);
if ( ms_ie ) {
    //Do internet explorer exclusive behaviour here
}
0
répondu Isaac Levi Felix Salinas 2016-11-03 06:31:13

Essayer de faire comme ceci

if ($.browser.msie && $.browser.version == 8) {
    //my stuff

}
0
répondu Deepak Kumar 2017-09-22 10:47:55

je pense que ça va vous aider à Ici

function checkIsIE() {
    var isIE = false;
    if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {
        isIE = true;
    }
    if (isIE)  // If Internet Explorer, return version number
    {
        kendo.ui.Window.fn._keydown = function (originalFn) {
            var KEY_ESC = 27;
            return function (e) {
                if (e.which !== KEY_ESC) {
                    originalFn.call(this, e);
                }
            };
        }(kendo.ui.Window.fn._keydown);

        var windowBrowser = $("#windowBrowser").kendoWindow({
            modal: true,
            id: 'dialogBrowser',
            visible: false,
            width: "40%",
            title: "Thông báo",
            scrollable: false,
            resizable: false,
            deactivate: false,
            position: {
                top: 100,
                left: '30%'
            }
        }).data('kendoWindow');
        var html = '<br /><div style="width:100%;text-align:center"><p style="color:red;font-weight:bold">Please use the browser below to use the tool</p>';
        html += '<img src="/Scripts/IPTVClearFeePackage_Box/Images/firefox.png"/>';
        html += ' <img src="/Scripts/IPTVClearFeePackage_Box/Images/chrome.png" />';
        html += ' <img src="/Scripts/IPTVClearFeePackage_Box/Images/opera.png" />';
        html += '<hr /><form><input type="button" class="btn btn-danger" value="Đóng trình duyệt" onclick="window.close()"></form><div>';
        windowBrowser.content(html);
        windowBrowser.open();

        $("#windowBrowser").parent().find(".k-window-titlebar").remove();
    }
    else  // If another browser, return 0
    {
        return false;
    }
}
0
répondu AirBlack 2017-12-18 08:06:44

cela ne fonctionne qu'en dessous de la version IE 11.

var ie_version = parseInt(window.navigator.userAgent.substring(window.navigator.userAgent.indexOf("MSIE ") + 5, window.navigator.userAgent.indexOf(".", window.navigator.userAgent.indexOf("MSIE "))));

console.log("version number",ie_version);

0
répondu Murali Krishna 2018-03-29 09:07:32

ou cette version très courte, retourne true si les navigateurs Est Internet Explorer:

function isIe() {
    return window.navigator.userAgent.indexOf("MSIE ") > 0
        || !!navigator.userAgent.match(/Trident.*rv\:11\./);
}
0
répondu Floris 2018-09-06 12:52:20

vous pouvez utiliser $.browser pour obtenir des informations sur le nom, le vendeur et la version.

voir http://api.jquery.com/jQuery.browser /

-3
répondu Roemer 2013-11-15 10:55:52