ChildNode.remove()polyfill与babel-polyfill

时间:2017-05-03 09:32:35

标签: javascript babeljs polyfills 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 中有错误。我错过了另一个配置吗?

谢谢

3 个答案:

答案 0 :(得分:13)

babel-polyfill个软件包只是填充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]);

答案 1 :(得分:2)

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

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

Polyfill.io没有提供的主要功能({1}}支持生成器功能(由再生器 - 运行时提供),因此对于完整功能,您需要包括而不是整个babel-polyfill

答案 2 :(得分:1)

我创建了一个很小的polyfill npm。 应该使您的生活更轻松。 https://www.npmjs.com/package/element-remove