2017-05-03 13 views
3

나는 ChildNode.remove()을 사용하고 Mozilla에서 설명했습니다. IE 용 polyfill이 필요합니다.ChildNode.remove() babel-polyfill이 포함 된 polyfill

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

webpack.config.babel.js : 나는 구성된 바벨 - polyfill로 웹팩을 사용하고

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

내 가정이었다 바벨 - polyfill 저를 제공 할 수있는 모든 일반 내가 필요로하는 polyfill -하지만 그렇지 않습니다. Internet Explorer 11에 오류가 있습니다. 내가 놓친 다른 설정이 있습니까?

Childnode.remove()는 DOM의 일부 그래서 바벨 그것으로 아무것도하지 않습니다, 그냥 내가 아는 한 자바 스크립트 객체를 polyfills 당신에게

답변

5

babel-polyfill 패키지 감사드립니다. Mozilla documentation에서 제안 된 polyfill을 사용하는 것이 좋습니다. (또는 외에) 바벨 - polyfill, 당신은 Polyfill.io 볼 수 있습니다에 대한 대안으로

// 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]); 
+0

CharacterData와 DocumentType 모두 호환성 문제가 있기 때문에 이러한 추가 polyfill을주의해서 사용하십시오 – Fiddles

1

.

babel-polyfill처럼 Polyfill.io 핵심 자바 스크립트 기능 (예를 들어 Array.from)하지만, 바벨 - polyfill 달리를 제공 할 것입니다, 또한 DOM 행동, (예를 들어, ChildNode.remove())을 polyfills. 기본적으로 브라우저 사용자 에이전트 문자열을 사용하여 필요한 폴리 실 (polyfill)을 결정하므로 최신 브라우저에서 필요하지 않은 polyfill을 다운로드하지 않아도됩니다.

Polyfill.io가 제공하지 않는 가장 중요한 것은 (babel-polyfill) 생성기 기능 (regenerator-runtime에서 제공됨)을 지원하므로 완전한 기능을 위해서는 babel-polyfill 대신 전체 값을 포함하고 싶습니다. .