2017-05-03 1 views
3

Ich benutze ChildNode.remove() und ich von Mozilla beschrieben Ich brauche ein Polyfill für IE. Ich verwende webpack mit der babel-polyfill konfiguriert:ChildNode.remove() Polyfill mit Babel-Polyfill

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

webpack.config.babel.js:

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

Meine Vermutung war, dass babel-polyfill würde mir alle die gemeinsame Polyfill ich brauchte - aber es ist nicht, ich habe einen Fehler in Internet Explorer 11. Gibt es eine andere Konfiguration, die ich vermisst habe?

Danke

Antwort

5

Die babel-polyfill Pakete polyfills nur JavaScript-Objekte, soweit ich weiß, Childnode.remove() Teil des DOM ist so nicht babel mit ihm tun nichts. Ich würde vorschlagen, dass Sie nur das Polyfill verwenden, das im Mozilla documentation vorgeschlagen wird.

// 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

Sowohl CharacterData als auch DocumentType haben einige Kompatibilitätsprobleme, daher sollten Sie diese zusätzlichen Polyfills mit Vorsicht verwenden – Fiddles

1

Als Alternative (oder zusätzlich zu) der babel-Füllwatte, Sie bei Polyfill.io aussehen kann.

Wie babel-polyfill wird Polyfill.io bieten Kern Javascript-Funktionalität (z Array.from), aber im Gegensatz zu babel-Füllwatte, es polyfills auch DOM Verhalten (z ChildNode.remove()). Standardmäßig verwendet es die Browser-User-Agent-Zeichenfolge, um zu ermitteln, welche Polyfills erforderlich sind, sodass moderne Browser keine Polyfills herunterladen müssen, die sie nicht benötigen.

Die Hauptsache, die Polyfill.io nicht bietet, die babel-polyfill tut, ist die Unterstützung für Generatorfunktionen (von Regenerator-Laufzeit zur Verfügung gestellt), so für die volle Funktionalität möchten Sie anstelle der gesamten babel-polyfill .