Heim >Web-Frontend >js-Tutorial >Warum schlägt meine JavaScript-Methode „indexOf()' in IE8 fehl und wie kann ich das Problem beheben?

Warum schlägt meine JavaScript-Methode „indexOf()' in IE8 fehl und wie kann ich das Problem beheben?

DDD
DDDOriginal
2024-12-01 04:28:10447Durchsuche

Why is my JavaScript `indexOf()` method failing in IE8, and how can I fix it?

Fehlende Array-Methode indexOf() in IE8

Im bereitgestellten Code wird die Methode indexOf() für ein Array innerhalb der Funktion CheckMe() verwendet. Während diese Funktion in Opera, Firefox und Chrome einwandfrei funktioniert, tritt in IE8 ein Fehler in der Zeile if (allowed.indexOf(ext[1]) == -1) auf. Dieses Problem tritt auf, weil IE8 die indexOf()-Funktion für Arrays nicht nativ unterstützt.

Um dieses Problem zu beheben, können Sie eine Polyfüllung integrieren, die die indexOf()-Methode zum Array-Objekt hinzufügt. Hier ein Beispiel:

if (!Array.prototype.indexOf) {
  Array.prototype.indexOf = function(elt /*, from*/) {
    var len = this.length >>> 0;

    var from = Number(arguments[1]) || 0;
    from = (from < 0) ? Math.ceil(from) : Math.floor(from);
    if (from < 0) from += len;

    for (; from < len; from++) {
      if (from in this && this[from] === elt) return from;
    }
    return -1;
  };
}

Diese Implementierung von indexOf() basiert auf der Version von MDN und ist mit Firefox und SpiderMonkey kompatibel. Dadurch wird die indexOf()-Methode zum Array-Objekt in IE8 oder jedem anderen Browser hinzugefügt, der sie nicht nativ unterstützt.

Durch die Einbindung dieser Polyfüllung können Sie sicherstellen, dass Ihr Code auch in älteren Browsern wie vorgesehen funktioniert wie IE8, dem die indexOf()-Methode fehlt.

Das obige ist der detaillierte Inhalt vonWarum schlägt meine JavaScript-Methode „indexOf()' in IE8 fehl und wie kann ich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn