我有完全相同的html:
<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Document</title>
</head>
<body>
<hello-world></hello-world>
<script>
class HelloWorld extends HTMLElement {
constructor() {
super();
this.attachShadow({mode: 'open'});
}
connectedCallback() {
this.shadowRoot.innerHTML = `<p>hello world</p>`;
}
}
customElements.define('hello-world', HelloWorld)
</script>
</body>
</html>
如果文件作为Content-Type text/html; charset=UTF-8
. 如果它被用作Content-Type application/xhtml+xml
那么它们都是空的。无论有没有shadowDom
.
如果我有
this.shadowRoot.innerHTML = `hello world`;
然后我得到了hello world
。我在 FF 和 Chrome 上都得到了完全相同的行为,所以它看起来像预期的那样工作 - 这是在哪里记录的?
是不是因为浏览器 DOM API 不再是 html5 DOM 并变成 XML DOM,这意味着它不再可能分配给innerHTML
,并且需要使用诸如DOMParser
等工具?