2017-02-24 58 views
3

我與FormData對象的工作,而我的代碼工作很好在Chrome,微軟邊緣吐出以下錯誤消息Object doesn't support property or method 'entries' - 這相當於下面的代碼:對象不支持屬性或方法「項」

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

我試過用.getAll()代替.entries(),但是Microsoft Edge並不能識別這兩種方法。

有沒有辦法讓這個功能(遍歷FormData文件)退出Microsoft Edge?

FORMDATA微軟邊緣控制檯轉儲

enter image description here

+0

此時Edge不支持'entries'和'getAll'。檢查最後的瀏覽器兼容性部分。 – Agalo

+0

您將需要一個polyfill,因爲它在Edge中不受支持。在這裏檢查一個polyfill:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/entries –

+0

你介意發佈它作爲答案嗎?這將有助於那裏的許多人得到這個錯誤。 – Bright

回答

1

本質上說,填充工具是一種方法,你可以手動定義一個本身不支持特定平臺上/瀏覽器的功能。

在你的情況,還有就是功能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文件(在您的應用程序運行之前執行),您可以在其中放置代碼或導入包含您需要的定義的文件。