it-swarm.com.de

Überprüfen Sie, ob der Benutzer verwendet IE mit jQuery

Ich rufe eine Funktion wie die folgende auf, indem Sie auf divs mit einer bestimmten Klasse klicken. 

Gibt es eine Möglichkeit, beim Start der Funktion zu überprüfen, ob ein Benutzer Internet Explorer verwendet, und bricht ihn ab, wenn er andere Browser verwendet, damit er nur für Benutzer von IE ausgeführt wird? Die Benutzer hier wären alle auf IE8 oder höheren Versionen, sodass ich nicht auf IE7 und niedrigere Versionen zurückgreifen müsste.

Wenn ich feststellen könnte, welchen Browser sie verwenden, wäre das großartig, aber nicht erforderlich.

Beispielfunktion:

$('.myClass').on('click', function(event)
{
    // my function
});
291
user2571510

Verwenden Sie die folgende JavaScript-Methode: 

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;
}

Die Details finden Sie auf der folgenden Microsoft-Support-Site: 

So ermitteln Sie die Browserversion aus einem Skript

Update: (IE 11-Unterstützung)

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;
}
380
SpiderCode

Seit Internet Explorer 12+ (auch bekannt als Edge) hat sich die Zeichenfolge User Agent erneut geändert.

/**
 * 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;
}

Verwendungsbeispiel:

alert('IE ' + detectIE());

Standardzeichenfolge von IE 10:

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

Standardzeichenfolge von IE 11:

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

Standardzeichenfolge von IE 12 (aka 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 

Standardzeichenfolge von 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 

Standardzeichenfolge von Rand 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 

Standardzeichenfolge von Rand 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 

Standardzeichenfolge von Rand 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 

Standardzeichenfolge von Rand 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 

Standardzeichenfolge von Edge 18 (Insider-Vorschau):

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 bei CodePen:

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

484
Mario

Ich füge einfach Mario's äußerst hilfreiche Antwort hinzu. 

Wenn Sie nur wissen möchten, ob der Browser IE ist oder nicht, kann der Code vereinfacht werden auf:

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
}

Update

Ich empfehle das jetzt. Es ist immer noch sehr gut lesbar und ist weitaus weniger Code :)

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

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

Danke an JohnnyFun in den Kommentaren für die verkürzte Antwort :)

74
Daniel Tonon

Dies gibt true für jede Version von Internet Explorer zurück:

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

Der Parameter userAgent ist optional und standardmäßig auf den Benutzeragenten des Browsers eingestellt.

45
bendytree

Sie können das Navigator-Objekt verwenden, um den Benutzer-Navigator zu erkennen. Sie benötigen dafür keine Jquery

<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
john Smith

So macht es das Angularjs-Team ( 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;

Dann gibt es mehrere Codezeilen, die überall verstreut sind und als Zahl wie z 

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

und

if (enabled && msie < 8) {
15
ThisClark

Verwenden Sie die Antworten oben; einfache & kondensierte Boolesche Rückgabe:

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

10
gdibble

Methode 01:
$. browser wurde in jQuery Version 1.3 veraltet und in 1.9 entfernt 

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

Methode 02:
Bedingte Kommentare verwenden

<!--[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]>

Methode 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.$1 );
    }

    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 );
}

Methode 04:
Verwenden Sie JavaScript/Manuelle Erkennung

/*
     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);
     }

 }());

Referenzlink

9
Aamir Shahzad
function detectIE() {
    var ua = window.navigator.userAgent;
    var ie = ua.search(/(MSIE|Trident|Edge)/);

    return ie > -1;
}
6
headione

modernizr verwenden

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
kevnk

Wenn Sie den Useragent nicht verwenden möchten, können Sie dies auch tun, um zu prüfen, ob der Browser IE ist. Der kommentierte Code läuft tatsächlich in IE - Browsern und setzt "false" auf "true".

var isIE = /*@[email protected]*/false;
if(isIE){
    //The browser is IE.
}else{
    //The browser is NOT IE.
}   
3
dev4life

ich habe das benutzt 

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
Jop Knoppers

Ich weiß, dass dies eine alte Frage ist, aber falls jemand wieder auf sie stößt und Probleme mit der Erkennung von IE11 hat, ist hier eine funktionierende Lösung für alle aktuellen Versionen von IE.

var isIE = false;
if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {
    isIE = true;   
}
3
Ty Bailey

Noch eine weitere einfache (aber von Menschen lesbare) Funktion, die erkennt, ob der Browser IE ist oder nicht (Edge ignoriert, was überhaupt nicht schlecht ist)

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
Chuck Le Butt

Versuchen Sie dies, wenn Sie jquery version> = 1.9 verwenden,

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;
}

Wenn Sie jQuery Version <1.9 verwenden ($ .browser wurde in jQuery 1.9 entfernt), verwenden Sie stattdessen folgenden Code:

$('.myClass').on('click', function (event) {
    if ($.browser.msie) {
        alert($.browser.version);
    }
});
2
Rohan Kumar

Unten habe ich einen eleganten Weg gefunden, während ich google ---

/ 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

Viele Antworten hier, und ich möchte meinen Beitrag hinzufügen. IE 11 war so ein Arsch in Sachen Flexbox (siehe alle Probleme und Inkonsistenzen hier ), dass ich wirklich einen einfachen Weg brauchte, um zu überprüfen, ob ein Benutzer einen IE - Browser verwendet (bis zu und einschließlich 11), aber ohne Edge, weil Edge eigentlich ganz nett ist.

Basierend auf den hier gegebenen Antworten habe ich eine einfache Funktion geschrieben, die eine globale boolesche Variable zurückgibt, die Sie dann in der Zeile verwenden können. Es ist sehr einfach, nach IE zu suchen.

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!");
}

Auf diese Weise müssen Sie die Suche nur einmal durchführen und das Ergebnis in einer Variablen speichern, statt das Ergebnis bei jedem Funktionsaufruf abrufen zu müssen. (Soweit ich weiß, müssen Sie nicht einmal darauf warten, dass das Dokument zur Ausführung dieses Codes bereit ist, da der Benutzeragent nicht mit dem DOM zusammenhängt.)

1
Bram Vanroy

Die Lösung von @ SpiderCode funktioniert nicht mit IE 11. Hier ist die beste Lösung, die ich fortan in meinem Code verwendet habe, bei der ich Browsererkennung für bestimmte Funktionen benötige.

Der IE11 meldet sich nicht mehr als MSIE. Gemäß dieser Änderungsliste ist es beabsichtigt, falsche Erkennung zu vermeiden.

Was Sie tun können, wenn Sie wirklich wissen wollen, dass es IE ist, das Trident/den String im Benutzerprogramm zu ermitteln, wenn navigator.appName Netscape zurückgibt, etwa (das ungetestete);

Danke an diese Antwort

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.$1 );
  }
  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.$1 );
  }
  return rv == -1 ? false: true;
}
1
AnujKu

Ich wollte nur überprüfen, ob der Browser IE11 oder älter war, denn nun, sie sind Mist.

function isCrappyIE() {
    var ua = window.navigator.userAgent;
    var crappyIE = false;
    var msie = ua.indexOf('MSIE ');
    if (msie > 0) {// IE 10 or older => return version number        
        crappyIE = true;
    }
    var trident = ua.indexOf('Trident/');
    if (trident > 0) {// IE 11 => return version number        
        crappyIE = true;
    }
    return crappyIE;
}   

if(!isCrappyIE()){console.table('not a crappy browser);}
1
Bill_VA

Aktualisieren Sie die Antwort von SpiderCode, um Probleme zu beheben, bei denen die Zeichenfolge 'MSIE' -1 zurückgibt, aber 'Trident' entspricht. Früher wurde NAN zurückgegeben, jetzt jedoch 11 für diese IE-Version.

   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
JeremyS
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');
}
}

Sie sollten das Ergebnis in der Konsole sehen, verwenden Sie Chrome Inspect.

0
linjie

Oder diese wirklich kurze Version gibt true zurück, wenn der Browser Internet Explorer ist:

function isIe() {
    return window.navigator.userAgent.indexOf("MSIE ") > 0
        || !!navigator.userAgent.match(/Trident.*rv\:11\./);
}
0
Floris

Versuchen Sie es so

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

}
0
Deepak Kumar

JavaScript-Funktion zur Erkennung der Version von Internet Explorer oder Edge

function ieVersion(uaString) {
  uaString = uaString || navigator.userAgent;
  var match = /\b(MSIE |Trident.*?rv:|Edge\/)(\d+)/.exec(uaString);
  if (match) return parseInt(match[2])
}
0
Shohel

Ich habe diesen Code in die Document Ready-Funktion eingefügt und er wird nur im Internet Explorer ausgelöst. In Internet Explorer 11 getestet.

var ua = window.navigator.userAgent;
ms_ie = /MSIE|Trident/.test(ua);
if ( ms_ie ) {
    //Do internet Explorer exclusive behaviour here
}

Dies funktioniert nur unter der 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
Murali Krishna

Sie können den gesamten Internet Explorer (letzte getestete Version 12) ermitteln.

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

Siehe hier https://jsfiddle.net/v7npeLwe/

0

Ich denke es wird dir helfen Hier

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
AirBlack