Element.createShadowRoot()的替代方法是什么?

问题描述 投票:2回答:2

我正在使用这段代码:

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

怎么解决这个?会有什么选择?

javascript css web-component shadow-dom
2个回答
5
投票

现在你可以使用attachShadow()而不是createShadowRoot()

  • implemented原生于Chrome(53 +),Opera(40+),Safari(10+)和Firefox(63+)。
  • webcomponents.js团队还有一个polyfillShadyDOM

Shadow DOM v1是DOM Living Standard

Edge将很快采用Chromium引擎,然后它将符合Shadow DOM v1。


1
投票

MDN docs告诉你使用attachShadow而不是......但是这个功能本身被标记为非标准,并且目前完全不受任何浏览器的支持:

enter image description here

enter image description here

在有一个具有良好浏览器支持的标准之前,如果你想使用web组件,最好使用webcomponents.js(充当polyfill)或Polymer(它有自己的API)。

即使webcomponents.js不支持attachShadow,你现在的选择要么:

... 或者 :

  • 将您的Web组件移植到Polymer(这意味着您应该使用Polymer的API)

许多人更喜欢Polymerwebcomponents.js,正是因为它有自己的API。如果您使用Polymer,您的代码更有可能面向未来,因为确切的Web组件实现是在幕后进行的,对该实现的任何更改都不太可能影响Polymer自己的API。

© www.soinside.com 2019 - 2024. All rights reserved.