How to query elements within shadow DOM from outside in Dart?

前端 未结 3 1708
清歌不尽
清歌不尽 2020-12-10 11:39

How can I select nodes within shadow DOM? Consider the following example:

structure of \"unshadowed\" DOM


  #sha         


        
3条回答
  •  臣服心动
    2020-12-10 12:06

    Vanilla only helper function using reduce method

    function queryShadow([firstShadowSelector, ...restOfTheShadowSelectors], itemSelector) {
        const reduceFunction = (currShadow, nextShadowSelector) => currShadow.shadowRoot.querySelector(nextShadowSelector);    
        const firstShadow = document.querySelector(firstShadowSelector);
        const lastShadow = restOfTheShadowSelectors.reduce(reduceFunction,firstShadow);
        return lastShadow && lastShadow.querySelector(itemSelector);
    }
    

    and use it like this

    const shadowSelectorsArr = ['vt-virustotal-app','file-view', '#report', 'vt-ui-file-card', 'vt-ui-generic-card'];
    const foundDomElem = queryShadow(shadowSelectorsArr, '.file-id');
    console.log(foundDomElem && foundDomElem.innerText);
    

提交回复
热议问题