indexOf-Funktionsanomalie in IE8 für Array-Objekte
Die bereitgestellte JavaScript-Funktion, die zur Validierung von Dateierweiterungen entwickelt wurde, stößt währenddessen auf ein Problem speziell in IE8 die Ausführung der if (allowed.indexOf(ext[1]) == -1)-Anweisung. Dieser Fehler wirft die Frage auf, warum die indexOf-Funktion in IE8 nicht korrekt ausgeführt wird.
Die indexOf-Funktion, eine native Methode in JavaScript-Arrays, gibt den Index des ersten Vorkommens eines angegebenen Elements innerhalb des Arrays zurück. In Internet Explorer-Versionen vor IE9 war diese Funktion jedoch nicht für Arrays definiert. Daher löst der Versuch, indexOf auf einem Array in IE8 zu verwenden, den Fehler aus.
Lösung
Um diese Diskrepanz zu beheben, kann vor der Verwendung von indexOf ein Polyfill verwendet werden Funktion. Ein Polyfill ist ein Codeausschnitt, der die Kompatibilität mit älteren Browserversionen gewährleistet. In diesem Fall kann die Polyfüllung für Array.prototype.indexOf wie folgt implementiert werden:
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; }; }
Die Implementierung dieser Polyfüllung stellt sicher, dass die indexOf-Funktion in älteren IE-Versionen verfügbar ist, sodass die JavaScript-Funktion wie vorgesehen funktionieren kann .
Das obige ist der detaillierte Inhalt vonWarum funktioniert indexOf nicht ordnungsgemäß mit Arrays in IE8?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!