ホームページ > ウェブフロントエンド > jsチュートリアル > IE8 で「Array.indexOf()」が機能しないのはなぜですか?どうすれば修正できますか?

IE8 で「Array.indexOf()」が機能しないのはなぜですか?どうすれば修正できますか?

Barbara Streisand
リリース: 2024-11-27 06:24:11
オリジナル
947 人が閲覧しました

Why Doesn't `Array.indexOf()` Work in IE8, and How Can I Fix It?

IE8 での Array.indexOf() の問題のトラブルシューティング

indexOf() メソッドは、配列内の要素を検索するために最新のブラウザーで広く使用されています。ただし、古いバージョンの Internet Explorer では問題が発生する可能性があります。

indexOf() がないために IE8 で失敗するスクリプトの例は次のとおりです。

function CheckMe() {
    var allowed = new Array('docx','xls','xlsx', 'mp3', 'mp4', '3gp', 'sis', 'sisx', 'mp3', 'wav', 'mid', 'amr', 'jpg', 'gif', 'png', 'jpeg', 'txt', 'pdf', 'doc', 'rtf', 'thm', 'rar', 'zip', 'htm', 'html', 'css', 'swf', 'jar', 'nth', 'aac', 'cab', 'wgz');
    var fileinput=document.getElementById('f');
    var ext = fileinput.value.toLowerCase().split('.');
    if ( allowed.indexOf(ext[1]) == -1) 
    {
        document.getElementById('uploadsec').innerHTML = document.getElementById('uploadsec').innerHTML;
        alert('This file type is not allowed!');
    }
}
ログイン後にコピー

IE8 の解決策互換性

IE8 でこの問題を解決するには、ポリフィルを使用した Array オブジェクトのindexOf() 関数:

if (!Array.prototype.indexOf) {
  Array.prototype.indexOf = function(elt /*, from*/) {
    // Code from MDN or another compatible implementation
  };
}
ログイン後にコピー

このポリフィルを実装した後、indexOf() メソッドは、IE8 およびネイティブ サポートが不足している可能性のあるその他のブラウザで期待どおりに機能するはずです。

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

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