2016-04-01 10 views
1

Ich verwende:Was ist die Alternative für Element.createShadowRoot()? dieses Stück Code

function setShadowDOM(i, css){ 
    [].forEach.call(document.getElementsByTagName(i), function(hostVal) { 
     var _root = hostVal.createShadowRoot(); 
      _root.innerHTML = '<style>:host ' + css + '</style><content></content>'; 
    }) 
} 

Ich bin auch reading this.

Wie löst man das? Was wäre die Alternative?

+1

Von 'mdn':' Diese Methode wurde zugunsten von attachShadow.' veraltet, und diese Frage wird helfen: http://stackoverflow.com/questions/34452028/atachshadow-vs-createshadowroot – tenbits

Antwort

1

Die MDN docs zu Ihnen sagen attachShadow stattdessen zu verwenden ... aber das Feature selbst als Nicht-Standard und völlig ohne Unterstützung von jedem Browser zur Zeit gekennzeichnet ist:

enter image description here

enter image description here

Bis es einen Standard mit anständiger Browserunterstützung gibt, verwenden Sie am besten webcomponents.js (das als polyfill fungiert) oder Polymer (das über eine eigene API verfügt), wenn Sie Webkomponenten verwenden möchten.

Wie auch webcomponents.js nicht unterstützt attachShadow, Ihre Optionen sind im Moment entweder:

... oder zu:

  • Port Ihre Web-Komponenten zu Polymer (Was bedeutet, sollten Sie Polymer API verwenden, anstatt)

Viele Menschen bevorzugen Polymer-webcomponents.js, gerade weil es seine eigene API hat. Wenn Sie Polymer verwenden, ist Ihr Code eher zukunftssicher, da die genaue Webkomponentenimplementierung unter der Oberfläche stattfindet und Änderungen an dieser Implementierung sich weniger auf die API von Polymer auswirken.