2017-02-24 3 views
3

Je travaille avec l'objet FormData, alors que mon code fonctionne bien sur Chrome, Microsoft bord recrache le message d'erreur suivant Object doesn't support property or method 'entries' - ce qui correspond au code suivant:objet ne supporte pas la propriété ou la méthode « entrées »

for(let pair of formData.entries()) { 
    ... 
} 

J'ai essayé de remplacer .entries() avec .getAll(), Microsoft Edge ne reconnaît cependant aucune des deux méthodes.

Existe-t-il un moyen d'obtenir cette fonctionnalité (itérer sur FormData fichiers) sur Microsoft Edge?

FormData Microsoft bord Console Dump

enter image description here

+0

Vérifiez la section de compatibilité du navigateur à la fin. – Agalo

+0

Vous aurez besoin d'un polyfill pour cela, car il n'est pas pris en charge dans Edge. Vérifiez ici pour un polyfill: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/entries –

+0

Cela vous dérange de l'afficher comme réponse? Cela aidera beaucoup de gens de là à obtenir cette erreur. – Bright

Répondre

1

Essentiellement, un polyfill est une façon que vous pouvez définir manuellement une fonction non prise en charge en mode natif sur une plate-forme/navigateur spécifique.

Dans votre cas, il y a une définition de base de la fonction Object.entries donnée ici: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries#Polyfill

Ils fournissent ce simple, prêt à déployer définition:

if (!Object.entries) 
    Object.entries = function(obj){ 
    var ownProps = Object.keys(obj), 
     i = ownProps.length, 
     resArray = new Array(i); // preallocate the Array 
    while (i--) 
     resArray[i] = [ownProps[i], obj[ownProps[i]]]; 

    return resArray; 
    }; 

En regardant le code ci-dessus, la première chose qu'il vérifie est si Object.entries existe. Si c'est le cas, pas d'inquiétude, mais si elle n'existe pas, alors elle le crée ... Tant que cette fonction est définie avant que vous l'appeliez dans votre code, ça devrait aller. En utilisant quelque chose comme angular-cli, ils fournissent un fichier polyfills.ts (qui est exécuté avant que votre application soit exécutée) où vous pouvez placer un code comme celui-ci ou importer des fichiers contenant les définitions dont vous aurez besoin. `Entries` et` getAll` ne sont pas pris en charge par Edge pour le moment.