gpt4 book ai didi

父自定义元素的构造函数中的 shadowRoot.innerHTML 中的 Safari NotSupportedError 自定义元素

转载 作者:行者123 更新时间:2023-12-01 15:49:37 27 4
gpt4 key购买 nike

我正在创建一个自定义元素并将其 shadowRoot 设置为包含其他自定义元素,这会引发 NotSupportedError (DOM Exception 9): A newly constructed custom element must not have child nodes。 (请注意,当标记中没有子自定义元素时,它不会抛出错误。)

是否有适当的方法来更改我的构造函数,以便我不会在 Safari 中抛出此 NotSupportedError

是否有更好的方法来设置此元素及其内容?

为什么仅当我在其标记中有另一个自定义元素时才会发生这种情况?

谢谢。以下是相关工作的节选。

class MyControl extends HTMLElement{
constructor(){
super();

var shadowRoot = this.attachShadow({mode: 'open'});
shadowRoot.innerHTML = `<slot name=form><select-provider src="/path/to/endpoint"></select-provider></slot>
`;
}
}
customElements.define('my-control', MyControl);
class SelectProvider extends HTMLElement{
constructor(){
super();

var shadowRoot = this.attachShadow({mode: 'open'});
shadowRoot.innerHTML = `<slot></slot>
`;
}
/* omitted handling of src, loading url */
render(){/* rewrite select with options */}
}
customElements.define('select-provider', SelectProvider);
</script>
<my-control><span>this custom element throws and error in Safari</span></my-control>

最佳答案

我的 child select-provider 正在构造函数中执行 this.appendChild,这会引发此错误。否则它会按预期工作。为了解决这个问题,我只是将它移到了 connectedCallback 中。

关于父自定义元素的构造函数中的 shadowRoot.innerHTML 中的 Safari NotSupportedError 自定义元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46081603/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com