ホームページ >ウェブフロントエンド >jsチュートリアル >IE8 で JavaScript の「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 サイトの他の関連記事を参照してください。