ホームページ > ウェブフロントエンド > jsチュートリアル > IE8 の配列で IndexOf が正しく動作しないのはなぜですか?

IE8 の配列で IndexOf が正しく動作しないのはなぜですか?

Susan Sarandon
リリース: 2024-12-07 11:05:14
オリジナル
435 人が閲覧しました

Why Doesn't indexOf Work Correctly with Arrays in IE8?

配列オブジェクトに対する 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート