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

2voto

AnujKu Punkte 2243

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

IE11 meldet sich nicht mehr als MSIE, laut dieser Liste von Änderungen ist dies beabsichtigt, um Fehldetektionen zu vermeiden.

Was du tun kannst, wenn du wirklich wissen möchtest, dass es sich um IE handelt, ist, das Trident/ in der Benutzeragentenzeichenfolge zu erkennen, wenn navigator.appName Netscape zurückgibt, so etwas wie (das nicht getestet);

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

1voto

Rameshwar Vyevhare Punkte 2696

Unten fand ich einen eleganten Weg, dies zu tun, während ich gegoogelt habe ---

/ IE erkennen
var IEversion = detectIE();

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

// Details zum Debuggen hinzufügen
document.getElementById('details').innerHTML = window.navigator.userAgent;

/**
 * IE erkennen
 * gibt die Version von IE oder false zurück, wenn der Browser nicht Internet Explorer ist
 */
function detectIE() {
  var ua = window.navigator.userAgent;

  // Testwerte; Entkommentieren, um das Ergebnis zu überprüfen …

  // 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 oder älter => Versionsnummer zurückgeben
    return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
  }

  var trident = ua.indexOf('Trident/');
  if (trident > 0) {
    // IE 11 => Versionsnummer zurückgeben
    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+) => Versionsnummer zurückgeben
    return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
  }

  // anderer Browser
  return false;
}

1voto

Lakshya Raj Punkte 1078

Dies ist eine weitere Möglichkeit, IE zu erkennen, ohne den User-Agent zu überprüfen:

var usingIE="__IE_DEVTOOLBAR_CONSOLE_EVAL_ERROR" in document;
alert("Du benutzt"+(usingIE?" den":" nicht den")+" Internet Explorer.");

Ich habe das zufällig entdeckt, als ich getestet habe, ob meine Seite in IE funktioniert, und ich in den Debugger gegangen bin und auf das Ordnersymbol geklickt habe. Es hatte meine Skripte und auch einen Dynamic Scripts-Ordner, den ich nicht hatte. Ich habe ihn geöffnet und viele browsertools.library.js-Dateien gefunden. Darin habe ich Sachen wie:

document.__IE_DEVTOOLBAR_CONSOLE_EVAL_RESULT = undefined;
document.__IE_DEVTOOLBAR_CONSOLE_EVAL_ERROR = false;
document.__IE_DEVTOOLBAR_CONSOLE_EVAL_ERRORCODE = undefined;
try{
document.__IE_DEVTOOLBAR_CONSOLE_EVAL_RESULT = eval("\r\n//# sourceURL=browsertools://browsertools.library.js");
}
catch( eObj ){
document.__IE_DEVTOOLBAR_CONSOLE_EVAL_ERRORCODE = eObj.number;
document.__IE_DEVTOOLBAR_CONSOLE_EVAL_RESULT = eObj.message || eObj.description || eObj.toString();
document.__IE_DEVTOOLBAR_CONSOLE_EVAL_ERROR = true;
}

Also habe ich diese verwendet, um zu testen, ob der Browser des Benutzers IE ist. Beachte jedoch, dass dies nur funktioniert, wenn du wissen möchtest, ob sie IE haben, nicht genau welche Version von IE sie haben.

1voto

Anand Bhushan Punkte 775

Ich bin im Jahr 2020 auf dieser Seite gelandet und sehe, dass bis IE5 alle userAgent-Zeichenfolgen Trident haben. Ich bin mir nicht sicher, ob sie etwas geändert haben. Daher hat es für mich funktioniert, nur nach Trident im userAgent zu suchen.

var isIE = navigator.userAgent.indexOf('Trident') > -1;

1voto

JeremyS Punkte 437

Aktualisierung von SpiderCodes Antwort, um Probleme zu beheben, bei denen der String 'MSIE' -1 zurückgibt, aber mit 'Trident' übereinstimmt. Früher wurde NAN zurückgegeben, jetzt wird jedoch 11 für diese Version von IE zurückgegeben.

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

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