自定义元素内的子内容未呈现

时间:2017-04-05 19:22:09

标签: javascript shadow-dom custom-element

儿童内容' span显示在Light DOM中,但实际上并未呈现给页面(参见屏幕截图)。

任何人都知道为什么它不可见?另外我注意到它显然也没有插槽,这是我试图让它可见。

<!doctype html>
<html>
  <body>
    <hello-world>
      <span>Child content</span>
    </hello-world>
    <script>
        var template = `
          <span>Hello world</span>
          <slot></slot>
        `;
        var MyElementProto = Object.create(HTMLElement.prototype);
        // Fires when an instance of the element is created
        MyElementProto.createdCallback = function() {
            var shadowRoot = this.createShadowRoot();
            shadowRoot.innerHTML = template;
        };
        document.registerElement('hello-world', { prototype: MyElementProto });
    </script>
  </body>
</html>

Screenshot of DOM tree and page with child not visible

P.S。这是在Chrome 57.0.2987.133

1 个答案:

答案 0 :(得分:2)

事实证明,createShadowRoot已被弃用。它似乎做我想要的并且没有显示错误,但不支持插槽(或显然显示子元素)。

createShadowRoot()交换attachShadow({mode: 'open'})解决了这个问题。