【发布时间】:2022-02-11 18:30:06
【问题描述】:
我正在开发一个可以向任何网站添加自定义叠加元素的网络扩展。当然,我不希望网站 CSS 和 JavaScript 干扰我的自定义元素,也不想以任何方式影响任何网站的外观,除了我的叠加层。
所以我很自然地转向Shadow DOM。我很快就知道我不能简单地将影子 DOM 附加到 document.body,因为这会取代整个页面。
事实证明,我需要在正文中使用一个常规元素来充当影子根:
const shadowHost = document.createElement('div');
document.body.appendChild(shadowHost);
const shadow = shadowHost.attachShadow({mode: 'closed'});
但是如何保护这个shadow root不受网站css或js的影响呢?
【问题讨论】:
-
为什么不直接使用 Web 组件?
标签: javascript css shadow-dom