IE8 の配列に対するindexOf の欠落: 解決策
この一般的な JavaScript 関数では、条件内で Array.prototype.indexOf を使用します。 ( allowed.indexOf(ext[1]) == -1) は、IE8 で問題を引き起こします。その理由を理解するために、IE8 の独特の動作を詳しく見てみましょう。
IE8 には、Opera、Firefox、Chrome などの最新のブラウザとは異なり、配列の IndexOf メソッドがありません。この省略は、indexOf メソッドを導入した ECMAScript 5 標準が IE8 でサポートされていなかったことが原因です。その結果、配列に対してindexOf メソッドを使用しようとすると、IE8 でエラーが発生します。
この問題を解決するには、次の戦略を採用できます。
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; }; }
このコード スニペットは MDN から提供されており、indexOf メソッドのポリフィルを定義します。これにより、IE8 を含むすべての環境で Array.prototype.indexOf が利用可能になります。配列でindexOfを使用する前にこのコードを追加することで、IE8を含むすべてのブラウザで正しく機能することを確認できます。
このソリューションを実装すると、元の関数がIE8でシームレスに動作し、開発者が次のことを確認できるようになります。ユーザーが選択したファイルでは、特定のファイル拡張子が許可されます。
以上がIE8 の配列の `indexOf` メソッドの問題を修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。