问题描述
我有一个 .NET 应用程序,它可以在 Chrome、FF 和 Edge 中完美运行。我被要求改造我们的一些 javascript 以在 IE 11 中工作。我已经将我的兼容性更改为 <Meta http-equiv="X-UA-Compatible" content="IE=11" />
。
我在花括号内的特定扩展函数上收到 Script1028。我已经运行了几次搜索并尝试以各种形式添加 Array.prototype.push.apply 'fix' 以替换 IE 11 的扩展函数。我已经通过 Babeljs.io 运行了代码,但似乎没有知道如何替换传播函数。
这是破坏的代码:
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 properties 是 ECMAScript 2018 的一部分,IE 不支持。你可以使用像 Babel 这样的转译器。运行以下命令安装 @babel/plugin-proposal-object-rest-spread:
npm install --save-dev @babel/plugin-proposal-object-rest-spread
然后根据 usage 将其作为插件包含。
您也可以参考有类似问题的 this thread 和 this thread。
另一种选择是您可以定义自己的函数,您可以在此线程中引用accepted answer。