ChildNode.remove() polyfill 和 babel-polyfill

ChildNode.remove() polyfill with babel-polyfill

我正在使用 ChildNode.remove() 并且我根据 Mozilla 的描述我需要一个用于 IE 的 polyfill。我正在使用配置了 babel-polyfill 的 webpack:

 "babel-polyfill": "^6.13.0",
 "webpack": "^2.4.1",

webpack.config.babel.js:

    entry: ['babel-polyfill', join(__dirname, path, "index.web.js") ],

我的假设是 babel-polyfill 会为我提供我需要的所有常用 polyfill - 但事实并非如此,我在 Internet Explorer 11 中遇到错误。我还错过了其他配置吗?

谢谢

据我所知,babel-polyfill 包只是 polyfills javascript 对象,Childnode.remove() 是 DOM 的一部分,所以 babel 不会对它做任何事情。我建议您只使用 Mozilla documentation.

中建议的 polyfill
// from:https://github.com/jserz/js_piece/blob/master/DOM/ChildNode/remove()/remove().md
(function (arr) {
  arr.forEach(function (item) {
    if (item.hasOwnProperty('remove')) {
      return;
    }
    Object.defineProperty(item, 'remove', {
      configurable: true,
      enumerable: true,
      writable: true,
      value: function remove() {
        this.parentNode.removeChild(this);
      }
    });
  });
})([Element.prototype, CharacterData.prototype, DocumentType.prototype]);

作为 babel-polyfill 的替代(或补充),您可以查看 Polyfill.io

babel-polyfill 一样,Polyfill.io 将提供核心 Javascript 功能(例如 Array.from),但与 babel-polyfill 不同的是,它还 polyfill DOM 行为,(例如 ChildNode.remove())。默认情况下,它使用浏览器用户代理字符串来确定哪些 polyfill 是必需的,从而防止现代浏览器需要下载他们不需要的 polyfill。

Polyfill.io 没有提供而 babel-polyfill 提供的主要内容是对生成器函数的支持(由 regenerator-runtime 提供),因此为了获得完整的功能,您需要包括那个而不是整个 babel-polyfill.

我创建了一个微型 polyfill npm。 应该让你的生活更轻松。 https://www.npmjs.com/package/element-remove