【发布时间】:2021-05-08 08:52:56
【问题描述】:
我一直在查看有关 Web 组件的 mdn 文档,我点击了链接,然后我到达了有关模板的文档,链接下方就是我正在查找的内容。
根据文件
它说如果我不使用 cloneNode 附加节点?模板的内部样式将不起作用。但是我尝试使用 cloneNode 进行追加和追加,但两个测试都是相同的......所以我有一个问题是我想念理解或规范更改以支持两者?我在 chrome 和 safari 中测试这两个浏览器
没有 cloneNode 的代码
<template id="my-paragraph">
<style>
p {
color: white;
background-color: #666;
padding: 5px;
}
</style>
<p>My paragraph</p>
</template>
<my-paragraph></my-paragraph>
<script>
customElements.define('my-paragraph',
class extends HTMLElement {
constructor() {
super();
let template = document.getElementById('my-paragraph');
let templateContent = template.content;
const shadowRoot = this.attachShadow({
mode: 'open'
})
var style = document.createElement('style');
style.textContent = `
p{
font-size: 30px;
color:'black';
}`;
shadowRoot.appendChild(style)
console.log(template)
shadowRoot.appendChild(templateContent);
}
}
);
</script>
使用 cloneNode 的代码
<template id="my-paragraph">
<style>
p {
color: white;
background-color: #666;
padding: 5px;
}
</style>
<p>My paragraph</p>
</template>
<my-paragraph></my-paragraph>
<script>
customElements.define('my-paragraph',
class extends HTMLElement {
constructor() {
super();
let template = document.getElementById('my-paragraph');
let templateContent = template.content;
const shadowRoot = this.attachShadow({
mode: 'open'
})
var style = document.createElement('style');
style.textContent = `
p{
font-size: 30px;
color:'black';
}`;
shadowRoot.appendChild(style)
console.log(template)
shadowRoot.appendChild(templateContent.cloneNode(true));
}
}
);
</script>
https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_templates_and_slots
【问题讨论】:
标签: web-component shadow-dom clonenode html-templates