2017-07-18 77 views
4

我有一個在Chrome/Firefox中正常使用箭頭功能,但我還需要努力IE11,我不知道是什麼更多的事情要做。如果IE上沒有任何支持,我該怎麼辦?

Here你可以看到,箭頭功能不支持IE11,所以我試圖從ES6更改我的代碼以ES5 here因爲我讀,這樣做可以解決的問題(鏈接你也可以檢查我的代碼:)用於刪除箭頭功能。

Object.entries也無法支持,而且我仍然需要它。 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/entries

所以我嘗試使用上面的鏈接的polyfill,但它使用反射也不支持。 https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Reflect

任何想法?我真的迷失在IE11開發中。 PD:該代碼仍在Chrome/Firefox上工作。

+0

你想要一個你的轉換器ES6代碼爲「老校友」 JS在舊版瀏覽器會理解_transpiler_。 – CBroe

+1

您已確定需要執行的操作:使用受支持的功能。你有沒有特定的問題? (這聽起來像是你可以把它變成一個關於如何在ES5中重現Object.entries的問題,但是就目前來看它的定義很差而且太寬泛)。 – Quentin

+0

如果您要支持舊版瀏覽器,則必須編寫適用於舊版瀏覽器的代碼。 ES6中的所有新方法都可以用其他方式編寫,以使您的代碼可以在舊版瀏覽器中使用。 – adeneo

回答

2

這是Object.entries的天真實現。
它非常適合於所有的例子在https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/entries

Object.entries = Object.entries || function(obj) { 
    return Object.keys(obj).map(function(k) { 
     return [k, obj[k]]; 
    }); 
}; 
+0

您是否看過我的問題?在你通過我的同一個鏈接上說清楚Internet Explorer - >不支持我試過但沒有工作 –

+0

我不理解你。我的實現不使用反射。請嘗試一下,看看它是否有效。 – Sagi

+0

它是純粹的ecmascript 5實現,所以它應該在IE11中工作(順便說一句,我在IE11中檢查它,它的工作)。不知道你在做什麼,但你可能是錯的。我放棄你的態度。 – Sagi

1

babelbabel preset env將要走的路。

這樣你就可以列出你打算支持的瀏覽器,然後babel只會將需要轉換的部分代碼轉換(支持將代碼轉換爲ES5),以支持所有的瀏覽器。

0

您可以使用多種解決方案來實現舊的瀏覽器支持新ES8 +功能。

全電路溶液可以基於的WebPack巴貝爾變壓器和設定的polyfills,這也稱爲墊片。你可以看到在create-react-appnext.js樣板刻板的配置。

更重要的是,如果您在開發機器上沒有安裝IE11,您可以使用測試套件提供程序(如TestCafe或NightWatch)在SauseLabs上運行E2E /功能測試。

相關問題