What is the difference between open and closed shadow DOM encapsulation mode?

一曲冷凌霜 提交于 2019-12-17 18:39:38

问题


I want to create a shadow DOM for an element so I can display elements for a Chrome extension without the page styles affecting them.

When I looked at the documentation for Element.createShadowRoot I saw it was deprecated so I checked out Element.attachShadow. It said I had to provide an encapsulation mode but did not explain what the different modes do. I searched a bit but I wasn't able to find anything clearly explaining what the difference was.

What is the difference between the modes and which one should I use for what I am trying to achieve?


回答1:


With the open mode you can access the Shadow DOM via the shadowRoot property of the HTML element.

With the closed mode you cannot. shadowRoot will return null.

You can use both modes for you want to achieve.

Here is a detailed explanation of the differences.




回答2:


To add to the accepted answer. The closed mode of Shadow DOM has the single benefit which is to provide Web Component authors with the flexibility to decide how (if at all) to expose the Shadow Root of the component. However, it's incredibly easy to circumvent any efforts a component author makes at hiding the Shadow Root so it's probably not worth bothering. See Open vs. Closed Shadow DOM for a more detailed explanation.



来源:https://stackoverflow.com/questions/39931284/what-is-the-difference-between-open-and-closed-shadow-dom-encapsulation-mode

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!