Maison  >  Article  >  interface Web  >  Pourquoi « Array.indexOf() » ne fonctionne-t-il pas dans IE8 et comment puis-je y remédier ?

Pourquoi « Array.indexOf() » ne fonctionne-t-il pas dans IE8 et comment puis-je y remédier ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-27 06:24:11895parcourir

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

Dépannage du problème Array.indexOf() dans IE8

La méthode indexOf() est largement disponible dans les navigateurs modernes pour rechercher des éléments dans des tableaux. Cependant, il peut rencontrer des problèmes dans les anciennes versions d'Internet Explorer.

Un exemple de script qui échoue dans IE8 en raison de l'indexOf() manquant est :

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!');
    }
}

Solution pour IE8 Compatibilité

Pour résoudre ce problème dans IE8, il est nécessaire de définir explicitement la fonction indexOf() pour l'objet Array en utilisant un polyfill :

if (!Array.prototype.indexOf) {
  Array.prototype.indexOf = function(elt /*, from*/) {
    // Code from MDN or another compatible implementation
  };
}

Après avoir implémenté ce polyfill, la méthode indexOf() devrait fonctionner comme prévu dans IE8 et d'autres navigateurs qui peuvent ne pas le prendre en charge nativement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn