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 的扩展函数。我已经通过 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 threadthis thread

另一种选择是您可以定义自己的函数,您可以在此线程中引用accepted answer

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...