<body> 元素上的阴影 DOM 是个坏主意吗?

Is shadow DOM on <body> element a bad idea?

用例:一个模态对话框,在调用时需要占用 100% H/W 和所有其他主体祖先 DOM 元素的功能。每个 page/web-app 只有一个,希望可以在 Javascript 模块到达时强制执行。

我可以很容易地要求网络作者为我的网络组件提供类似 <DIV></DIV> 的东西,一种 Google 地图模式,但是附加阴影 <DIV></DIV> 有什么本质上不好的地方吗? =29=] 到 document.body?在 Chrome.

上肯定是一个没有错误的选项

一个相关的问题是我可以替换元素的阴影 DOM post 渲染吗?我知道 Shadow DOM 1.0 只允许每个元素有 1 个 shadow DOM 但我的用例是,在 运行 时间,我需要试探性地 assemble 适当的模板来满足给定时间 environment/ambiance。我想到的一种方法是在加载时附加一个空阴影 DOM,从而防止任何 <SLOT> 竞争者渲染,然后,当我知道 UI 需要到位时,swap/clone/replace 占位符 Shadow DOM 带有完整的 ridgy didge 模板内容。

所以:- 1) BODY 作为 HOST 可以吗? 2) 替换 Shadow DOM 的最佳实践是什么?

1) Is BODY as a HOST ok?

2) What is best-practice for replacing Shadow DOM?

使用其中之一:

body.shadowRoot.innerHTML = [new template innerHTML] 

或:

body.shadowRoot.replaceChild( newNodes, oldNode )

或:

body.shadowRoot.innerHTML = ''
body.shadowRoot.appendChild( newNodes )

使用 template.content 可以直接获取已经解析的 DocumentFragment,因此在某些情况下它可以更快,而使用 template.innerHTML 可以利用 template literals,然后包含值一些变量。