当使用用户嵌入的 JSON 字符串创建 HTML 自定义元素时(尽管字符串的类型与此处不相关)...
<my-elem>
{ "some":"content" }
</my-elem>
Run Code Online (Sandbox Code Playgroud)
我想要JSON.parse
这样...
class MyElement extends HTMLElement {
constructor() {
super();
this.root = this.attachShadow({ mode:'open' });
this.root.appendChild(template.content.cloneNode(true));
}
connectedCallback() {
JSON.parse(this.innerHTML);
}
}
customElements.define('my-elem', MyElement);
const template = document.createElement('template');
template.innerHTML = `irrelevant`;
Run Code Online (Sandbox Code Playgroud)
...并使用 Firefox v.63 获得完美结果。
但是用 Chrome v.71 运行这个我得到
Uncaught SyntaxError: Unexpected end of JSON input
Run Code Online (Sandbox Code Playgroud)
由于this.innerHTML
返回空字符串。
我还尝试了其他 DOM 方法来访问文本内容,但也都失败了。
现在我对如何让它与 Chrome 一起工作一无所知。
顺便说一句:使用<slot>
没有任何帮助,因为我不想渲染文本内容......只能访问它进行解析。
解决: