【发布时间】:2019-04-10 11:06:48
【问题描述】:
我正试图弄清楚 Web 组件是如何工作的,但无法完全理解插槽中后备内容的规则:
我有一个像这样的网络组件:
const template = document.createElement('template');
template.innerHTML = `
<slot name="content">
<span>fallback</span>
</slot>
<slot>
<span>fallback on an anonymus slot</span>
</slot>
<section>...and more content form shadow DOM</section>
`;
class SomeComponent extends HTMLElement{
constructor() {
super();
const shadowRoot = this.attachShadow({mode: 'open'});
shadowRoot.appendChild(template.content.cloneNode(true));
}
}
window.customElements.define('some-component', SomeComponent);
如果我把这个组件放在这样的页面上
<some-component>
<span slot="content">named slot content</span>
</some-component>
我从未看到未命名插槽的“后备”内容:
但它确实存在于影子 DOM 中:
我不使用任何 pollyfills 并且依赖当前的 Chrome 网络组件支持
【问题讨论】:
标签: javascript web-component shadow-dom custom-element html5-template