儿童内容' 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>
P.S。这是在Chrome 57.0.2987.133
答案 0 :(得分:2)
事实证明,createShadowRoot
已被弃用。它似乎做我想要的并且没有显示错误,但不支持插槽(或显然显示子元素)。
为createShadowRoot()
交换attachShadow({mode: 'open'})
解决了这个问题。