我正在使用自定义元素,这非常好。
但是我面临一个问题:

调用connectedCallback()函数时,似乎该节点尚未在DOM中位于其位置,因此我无法访问其父节点,因此需要它们。

class myElement extends HTMLElement{
    constructor() {
        super();
        this.tracklist =    undefined;
    }
    connectedCallback(){
        this.render();
    }
    render(){

        this.tracklist = this.closest('section');

        // following code requires this.tracklist!
        // ...
    }

window.customElements.define('my-element', myElement);


在调用render()之前,如何确定父节点是可访问的?

谢谢 !

最佳答案

这是一个已知问题:

connectedCallback并不表示您的元素已被解析或未完全解析。
自定义元素缺少parsedCallback方法

在以下位置查看所有答案:


textContent empty in connectedCallback() of a custom HTMLElement
自定义html元素的已连接回调
How to have a 'connectedCallback' for when all child custom elements have been connected


TL; DR;

也许一个快速(又肮脏的?)修复方法是延迟您的渲染方法:

 connectedCallback(){
     setTimeout(this.render);
 }

07-28 05:40