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!