IE 11 Script1028在函数内传播,尝试了Array.prototype.push.apply



我有一个.NET应用程序,它可以在Chrome、FF和Edge中完美工作。我被要求对我们的一些javascript进行改造,以便在IE 11中工作。我已经将兼容性更改为<META http-equiv="X-UA-Compatible" content="IE=11" />

我收到了一个关于花括号内特定排列函数的Script1028。我已经运行了几次搜索,并试图以各种形式添加Array.prototype.push.apply"fix"来替换IE 11的spread函数。我已经通过Babeljs.io运行了代码,但它似乎不知道如何替换spread函数。

以下是正在破解的代码:

createDataTree = function createDataTree(dataset) {
//console.log(bookmarkfolders);
var hashTable = Object.create(null);
dataset.forEach(function (aData) {
return hashTable[aData.DroppableID] = { ...aData,
children: []
};
});
var dataTree = [];
dataset.forEach(function (aData) {
if (aData.parentID != "") hashTable[aData.parentID].children.push(hashTable[aData.DroppableID]);
else dataTree.push(hashTable[aData.DroppableID]);
});
return dataTree;
}

我希望我缺少一个简单的部分,有人能很快向我展示如何为IE 11兼容性改造这个扩展功能。提前谢谢。

如何包含babel来传输代码?

object rest/spread属性是ECMAScript 2018的一部分,IE不支持它。您可以使用类似Babel的transfiler。通过运行安装@babel/plugin-property-object rest spread

npm install --save-dev @babel/plugin-proposal-object-rest-spread

然后根据使用情况将其作为插件。

你也可以参考这个线程和这个有类似问题的线程。

另一种选择是,您可以定义自己的函数,您可以在该线程中引用已接受的答案。

最新更新