489 Stimmen

Überprüfen, ob der Benutzer IE verwendet

Ich rufe eine Funktion wie die folgende auf, indem ich auf Divs mit einer bestimmten Klasse klicke.

Gibt es eine Möglichkeit zu überprüfen, wenn die Funktion gestartet wird, ob ein Benutzer Internet Explorer verwendet und sie abzubrechen / abzubrechen, wenn sie andere Browser verwenden, sodass sie nur für IE-Benutzer ausgeführt wird? Die Benutzer hier wären alle auf IE8 oder höheren Versionen, sodass ich IE7 und ältere Versionen nicht abdecken müsste.

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

Beispiel Funktion:

$('.myClass').on('click', function(event)
{
    // meine Funktion
});

4voto

dev4life Punkte 842

Wenn Sie den Benutzeragenten nicht verwenden möchten, könnten Sie auch einfach dies tun, um zu überprüfen, ob der Browser IE ist. Der auskommentierte Code wird tatsächlich in IE-Browsern ausgeführt und ändert das "false" in "true".

var isIE = /*@cc_on!@*/false;
if(isIE){
    //Der Browser ist IE.
}else{
    //Der Browser ist NICHT IE.
}

3voto

Stefan Steiger Punkte 72861

Nekromantie.

Um nicht vom User-Agent-String abhängig zu sein, überprüfen Sie einfach auf ein paar Eigenschaften:

if (document.documentMode) 
{
    console.log('Hallo Microsoft IE Benutzer!');
}

if (!document.documentMode && window.msWriteProfilerMark) {
    console.log('Hallo Microsoft Edge Benutzer!');
}

if (document.documentMode || window.msWriteProfilerMark) 
{
    console.log('Hallo Microsoft Benutzer!');
}

if (window.msWriteProfilerMark) 
{
    console.log('Hallo Microsoft Benutzer mit weniger Zeichen!');
}

Außerdem erkennt dies das neue Chredge/Edgium (Anaheim):

function isEdg()
{ 

    for (var i = 0, u="Microsoft", l =u.length; i < navigator.plugins.length; i++)
    {
        if (navigator.plugins[i].name != null && navigator.plugins[i].name.substr(0, l) === u)
            return true;
    }

    return false;
}

Und dies erkennt Chromium:

function isChromium()
{ 

    for (var i = 0, u="Chromium", l =u.length; i < navigator.plugins.length; i++)
    {
        if (navigator.plugins[i].name != null && navigator.plugins[i].name.substr(0, l) === u)
            return true;
    }

    return false;
}

Und dies Safari:

if(window.safari)
{
    console.log("Safari, yeah!");
}

3voto

Jop Knoppers Punkte 543

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

3voto

Ty Bailey Punkte 2382

Ich weiß, dass dies eine alte Frage ist, aber für den Fall, dass sie wieder auftaucht und jemand Probleme hat, IE11 zu erkennen, hier ist 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;   
}

2voto

Bram Vanroy Punkte 24741

Viele Antworten hier, und ich möchte meinen Beitrag hinzufügen. IE 11 hat sich bezüglich Flexbox als ziemliches Problem erwiesen (siehe alle Probleme und Inkonsistenzen hier), sodass ich wirklich eine einfache Möglichkeit benötigt habe, um zu überprüfen, ob ein Benutzer einen beliebigen IE-Browser verwendet (bis einschließlich 11), aber ausschließlich Edge, denn Edge ist tatsächlich ziemlich gut.

Basierend auf den hier gegebenen Antworten habe ich eine einfache Funktion geschrieben, die eine globale boolesche Variable zurückgibt, die Sie dann später verwenden können. Es ist sehr einfach, nach IE zu prüfen.

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("Ich bin ein Internet Explorer!");
}

Auf diese Weise müssen Sie die Suche nur einmal durchführen und das Ergebnis in einer Variablen speichern, anstatt das Ergebnis bei jedem Funktionsaufruf abzurufen. (Soweit ich weiß, müssen Sie nicht einmal auf das Dokument bereit warten, um diesen Code auszuführen, da der Benutzeragent nicht mit dem DOM zusammenhängt.)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X