2016-04-01 13 views
1

私は、コードのこの部分を使用しています:Element.createShadowRoot()の代替手段は何ですか?

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

私もreading thisです。

これを解決するにはどうすればよいですか?代わりになるのは何ですか?

+1

'mdn': 'このメソッドは、attachShadowの代わりに非難されています.'という疑問があります。この質問は役に立ちます:http://stackoverflow.com/questions/34452028/atachshadow-vs-createshadowroot – tenbits

答えて

1

今、あなたはcreateShadowRoot()の代わりにattachShadow()を使用することができます。

シャドウDOM v1はDOM Living Standardです。

EdgeFirefoxの実装をサポートできます。

+0

ブーム!それは、感謝の仲間です –

1

MDN docsではなくattachShadowを使用するためにあなたに教えて...しかし、その機能自体は現時点ではどのブラウザで非標準と完全にサポートされていないとしてフラグ付けされています

enter image description here

enter image description here

まともなブラウザがサポートされている標準が提供されるまでは、Webコンポーネントを使用する場合は、として動作するwebcomponents.jsまたはPolymer(独自のAPIを使用)を使用することをお勧めします。

は、ASでもwebcomponents.jsattachShadowをサポートしていない、現時点では、あなたのオプションは、のいずれかです:

でこの機能をpolyfillingためwebcomponents.jsを使用して...または:

  • ウェブコンポーネントをPolymerに移植する(あなたの代わりに、ポリマーのAPIを使用する必要があります意味)

多くの人々は、それは、独自のAPIを持っているからこそ、webcomponents.jsPolymerを好みます。 Polymerを使用すると、正確なWebコンポーネントの実装がボンネットの下で行われ、その実装に対する変更がPolymer自身のAPIに影響を与える可能性が低いため、コードは将来性がある可能性が高くなります。

関連する問題