在教程中,我们只看到了Shadow DOM的好处,但是也应该存在一些缺点。在哪些情况下应该避免使用Shadow DOM?
Shadow DOM功能既有优点也有缺点:
样式隔离是一种优点,如果您需要它的话,但如果用户想要使用全局CSS样式表为影子DOM组件设置样式,则是一种缺点。
DOM遮蔽在某些情况下是有益的,但如果外部脚本/库或扩展需要解析或选择内容,则是一种缺点。
由于许多第三方库(或扩展程序)不支持Shadow DOM内容,因此存在许多问题,因为它们未设计用于处理它,或者需要进行一些额外的配置才能与Shadow DOM一起使用。
例如:
另外,解析HTML的扩展程序将被阻止在Shadow DOM边界处:这是一种优点,如果您不想被监视,但如果您认为它们是有用的服务,则是一种缺点。
事件传播在Shadow DOM内部和外部是不同的。 因此,您可能会在处理UI事件时遇到一些困难。
例如:
结论
仅在需要CSS样式或DOM隔离时使用Shadow DOM。
如果需要与某些不符合规范的第三方组件或库交互,请勿使用Shadow DOM。
这项技术的规范尚未稳定,并且不受许多浏览器支持,这可以称为一个缺点。
详见:https://developer.mozilla.org/en-US/docs/Web/API/Element/attachShadow
目前我会建议:在大多数情况下应避免使用,除非您想尝试新技术并且不用于生产环境。
更新:到现在为止,所有现代浏览器都支持此功能。