ホームページ  >  記事  >  ウェブフロントエンド  >  IE8 の配列の `indexOf` メソッドの問題を修正するにはどうすればよいですか?

IE8 の配列の `indexOf` メソッドの問題を修正するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-25 03:34:14603ブラウズ

How Can I Fix the `indexOf` Method Issue for Arrays in IE8?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。