如何修改使用封闭阴影 dom 的站点?
How to modify a site that uses closed shadow dom?
给定一个网站使用具有 closed 影子根的 Web 组件,我如何从扩展内容脚本访问或修改 DOM?
Firefox 63 introduced the privileged accessor Element.openOrClosedShadowRoot
(MDN documentation) 允许 webextensions 访问影子根,无论它们的 open/closed 状态如何。
其他 API,例如 querySelectorAll
仍然受到影子 dom 隔离的影响,因此要找到影子根,扩展必须通过 NodeIterator
或 [=13 遍历整个树=] 检查阴影根。由于影子根可能会在稍后的点上附加,扩展也可能必须等待通过突变观察器修改页面,然后才能尝试访问影子 DOM,因此总体而言,这种方法不如使用 querySelector
更符合人体工程学,但至少有可能。
给定一个网站使用具有 closed 影子根的 Web 组件,我如何从扩展内容脚本访问或修改 DOM?
Firefox 63 introduced the privileged accessor Element.openOrClosedShadowRoot
(MDN documentation) 允许 webextensions 访问影子根,无论它们的 open/closed 状态如何。
其他 API,例如 querySelectorAll
仍然受到影子 dom 隔离的影响,因此要找到影子根,扩展必须通过 NodeIterator
或 [=13 遍历整个树=] 检查阴影根。由于影子根可能会在稍后的点上附加,扩展也可能必须等待通过突变观察器修改页面,然后才能尝试访问影子 DOM,因此总体而言,这种方法不如使用 querySelector
更符合人体工程学,但至少有可能。