ホームページ >ウェブフロントエンド >jsチュートリアル >IE8 で JavaScript の「indexOf()」メソッドが失敗するのはなぜですか?どうすれば修正できますか?

IE8 で JavaScript の「indexOf()」メソッドが失敗するのはなぜですか?どうすれば修正できますか?

DDD
DDDオリジナル
2024-12-01 04:28:10518ブラウズ

Why is my JavaScript `indexOf()` method failing in IE8, and how can I fix it?

IE8 の配列のindexOf() メソッドがありません

提供されたコードでは、indexOf() メソッドが CheckMe() 関数内の配列で使用されています。この関数は Opera、Firefox、Chrome では問題なく動作しますが、IE8 では if ( allowed.indexOf(ext[1]) == -1) の行でエラーが発生します。この問題は、IE8 が配列のindexOf() 関数をネイティブにサポートしていないために発生します。

この問題を解決するには、indexOf() メソッドを Array オブジェクトに追加するポリフィルを組み込むことができます。以下に例を示します。

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;
  };
}

indexOf() のこの実装は MDN のバージョンに基づいており、Firefox および SpiderMonkey と互換性があります。これは、IE8 またはそれをネイティブにサポートしていないその他のブラウザの Array オブジェクトに、indexOf() メソッドを追加します。

このポリフィルを組み込むことで、レガシー ブラウザでもコードが意図したとおりに機能することを保証できます。 IndexOf() メソッドがない IE8 と同様です。

以上がIE8 で JavaScript の「indexOf()」メソッドが失敗するのはなぜですか?どうすれば修正できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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