FormData
オブジェクトを使用していますが、私のコードはChromeで正常に動作しますが、Microsoft Edgeは次のエラーメッセージ_Object doesn't support property or method 'entries'
_を吐き出します。これは次のコードに対応します。
_for(let pair of formData.entries()) {
...
}
_
.entries()
を.getAll()
に置き換えようとしましたが、Microsoft Edgeは両方の方法のどちらも認識しません。
Microsoft Edgeからこの機能(FormData
ファイルを反復)を取得する方法はありますか?
FormData Microsoft Edge Console Dump
本質的に、ポリフィルは、特定のプラットフォーム/ブラウザでネイティブにサポートされていない関数を手動で定義する方法です。
あなたの場合、関数_Object.entries
_の基本的な定義がここにあります: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/ entries#Polyfill
これらは、このシンプルですぐにデプロイできる定義を提供します。
_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;
};
_
上記のコードを見ると、最初にチェックするのは_Object.entries
_が存在するかどうかです。存在する場合、心配はありませんが、存在しない場合は作成します...コードで実際に呼び出す前にこの関数が定義されている限り、問題ありません。
angular-cli のようなものを使用して、これらはアプリの実行前に実行されるpolyfills.tsファイルを提供します。このファイルで、このようなコードを配置したり、必要な定義を含むファイルをインポートしたりできます。
2018年10月30日更新:
@apsillersは、上記の答えがFormData.entries()
には適用されず、代わりにObject.entries()
に適用されることを正しく指摘しました。
FormData.entries()
の解決策(これは私にとってはうまくいきました): https://stackoverflow.com/a/49556416/3806701
基本的に、このポリフィルをインポートします。
_<script src="https://unpkg.com/formdata-polyfill"></script>
_
その後、次のようにFormData
を繰り返すことができます。
_var formDataEntries = (<any>formData).entries(), formDataEntry = formDataEntries.next(), pair;
while (!formDataEntry.done) {
pair = formDataEntry.value;
console.log(pair[0] + ', ' + pair[1]);
formDataEntry = formDataEntries.next();
}
_