配列オブジェクトに対する IE8 のindexOf 関数の異常
ファイル拡張子を検証するように設計された提供された JavaScript 関数で、IE8 で特に問題が発生します。 if ( allowed.indexOf(ext[1]) == -1) ステートメントの実行。この障害により、なぜ IE8 でindexOf 関数が正しく実行されないのかという疑問が生じます。
JavaScript 配列のネイティブ メソッドであるindexOf 関数は、配列内で最初に出現した指定された要素のインデックスを返します。ただし、IE9 より前のバージョンの Internet Explorer では、この関数は配列に対して定義されていませんでした。その結果、IE8 で配列に対してindexOf を利用しようとすると、エラーが発生します。
解決策
この不一致に対処するには、indexOf を利用する前にポリフィルを使用できます。関数。ポリフィルは、古いバージョンのブラウザとの互換性を与えるコード スニペットです。この例では、Array.prototype.indexOf のポリフィルは次のように実装できます:
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; }; }
このポリフィルを実装すると、古い IE バージョンでもindexOf 関数が使用できるようになり、JavaScript 関数が意図したとおりに動作できるようになります。 .
以上がIE8 の配列で IndexOf が正しく動作しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。