开放阴影DOM封装模式和封闭阴影DOM封装模式有什么区别



我想为一个元素创建一个影子DOM,这样我就可以显示一个Chrome扩展的元素,而不受页面样式的影响。

当我查看Element.createShadowRoot的文档时,我看到它被弃用了,所以我检查了Element.attachShadow。它说我必须提供一个封装模式,但没有解释不同模式的作用。我搜索了一下,但我没能找到任何清楚地解释差异是什么。

这些模式之间有什么区别,我应该使用哪一种模式来达到我想要达到的效果?

使用open模式,您可以通过HTML元素的shadowRoot属性访问Shadow DOM。

closed模式不能。shadowRoot将返回null

你可以根据自己的需要使用这两种模式。

添加到接受的答案中。Shadow DOM的封闭模式有一个好处,那就是为Web组件作者提供了决定如何(如果有的话)公开组件的Shadow根的灵活性。然而,要绕过组件作者隐藏阴影根所做的任何努力是非常容易的,所以这可能不值得费心。更详细的解释请参见打开与关闭阴影DOM。