IndexOf manquant d'IE8 pour les tableaux : une solution
Dans cette fonction JavaScript courante, l'utilisation de Array.prototype.indexOf dans la condition if ( autorisé.indexOf(ext[1]) == -1) provoque un problème dans IE8. Pour comprendre pourquoi, examinons le comportement unique d'IE8.
IE8, contrairement aux navigateurs modernes tels qu'Opera, Firefox et Chrome, ne dispose pas d'une méthode indexOf pour les tableaux. Cette omission vient du fait que le standard ECMAScript 5, qui introduisait la méthode indexOf, n'était pas supporté par IE8. Par conséquent, les tentatives d'utilisation de la méthode indexOf sur les tableaux entraîneront une erreur dans IE8.
Pour résoudre ce problème, nous pouvons adopter la stratégie suivante :
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; }; }
Cet extrait de code , provenant de MDN, définit un polyfill pour la méthode indexOf. Il garantit qu'Array.prototype.indexOf est disponible dans tous les environnements, y compris IE8. En ajoutant ce code avant d'utiliser indexOf sur les tableaux, nous pouvons garantir qu'il fonctionnera correctement dans tous les navigateurs, y compris IE8.
En implémentant cette solution, la fonction d'origine fonctionnera de manière transparente dans IE8, permettant aux développeurs de vérifier si une extension de fichier spécifique est autorisée dans un fichier sélectionné par l'utilisateur.
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!