Javascript 如何在关闭模式下从ShadowDom中访问shadowroot?
我有一个脚本,在ShadowDom之外,它将shadowRoot附加到元素并填充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
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()代码>