<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,然后包含值一些变量。
用例:一个模态对话框,在调用时需要占用 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,然后包含值一些变量。