Javascript 如何在关闭模式下从ShadowDom中访问shadowroot?

Javascript 如何在关闭模式下从ShadowDom中访问shadowroot?,javascript,html,shadow-dom,Javascript,Html,Shadow Dom,我有一个脚本,在ShadowDom之外,它将shadowRoot附加到元素并填充ShadowDom。shadowRoot的模式已关闭。我不是要加上 var variable = element.attachShadow({mode:'closed'}) 变量,它位于函数内 影子Dom中的脚本需要访问同一影子Dom的其他元素。有办法吗?我试过了 document.currentScript.parentNode 但是document.currentScript返回null。为什么要在shad

我有一个脚本,在ShadowDom之外,它将shadowRoot附加到元素并填充ShadowDom。shadowRoot的模式已关闭。我不是要加上

var variable = element.attachShadow({mode:'closed'}) 
变量,它位于函数内

影子Dom中的脚本需要访问同一影子Dom的其他元素。有办法吗?我试过了

document.currentScript.parentNode

但是document.currentScript返回null。

为什么要在shadowDOM中存储代码?在shadowDOM中,代码不像HTML和CSS那样是沙盒。它仍然在全球范围内运行。这与
的工作方式不同

如果您要尝试这种级别的代码分离,那么只需使用真正的WebComponent并在该类中执行所有操作

如果您仍然必须继续以当前方式执行,则需要有一种方法将
变量
(shadowRoot变量)传递到要放置在shadowDOM中的代码中

更新-2020年8月3日

如果其他代码需要访问封闭的阴影DOM,则创建
shadowRoot
的代码需要将
shadowRoot
保存为变量,然后将该变量传递给其他函数。或者,您需要在JavaScript中创建一个封闭的作用域,并在该作用域中存储
shadowRoot
。如果所有其他函数都在该范围内,则它们可以访问指向
shadowRoot
的变量

下面是一些示例代码,展示了如何创建范围

constPublicInterface=(函数(){
树根变种;
函数createShadowDom(){
阴影根=。。。
}
函数doSomethingElse(){
设a=shadowRoot.querySelector('.something');
如果(a){
}
}
返回{
创造阴影世界,
多索霉素
}
})();
publicInterface.createShadowDom();
publicInterface.doSomethingElse()