我想为一个元素创建一个影子DOM,这样我就可以显示一个Chrome扩展的元素,而不受页面样式的影响。
当我查看Element.createShadowRoot
的文档时,我看到它被弃用了,所以我检查了Element.attachShadow
。它说我必须提供一个封装模式,但没有解释不同模式的作用。我搜索了一下,但我没能找到任何清楚地解释差异是什么。
这些模式之间有什么区别,我应该使用哪一种模式来达到我想要达到的效果?
使用open
模式,您可以通过HTML元素的shadowRoot
属性访问Shadow DOM。
closed
模式不能。shadowRoot
将返回null
。
你可以根据自己的需要使用这两种模式。
添加到接受的答案中。Shadow DOM的封闭模式有一个好处,那就是为Web组件作者提供了决定如何(如果有的话)公开组件的Shadow根的灵活性。然而,要绕过组件作者隐藏阴影根所做的任何努力是非常容易的,所以这可能不值得费心。更详细的解释请参见打开与关闭阴影DOM。