我正在尝试创建一个带有浮动小部件的Chrome扩展程序。为此,我必须将元素与页面其余部分隔离开来。影子DOM看起来非常适合,但它并没有做我期望的事情。
这是我的内容脚本:
content.js
var lightDom = document.createElement('style');
lightDom.innerText = 'div { color: red }';
document.body.appendChild(lightDom);
var shadowDom = document.createElement('div');
document.body.appendChild(shadowDom);
var shadowRoot = shadowDom.attachShadow({'mode': 'open'});
shadowRoot.innerHTML = `
<style>
div {
background-color: blue;
}
</style>
<div>Shadow!</div>
`;
在Shadow DOM中的div应该是黑色文本,但实际上却是红色文本。我做错了什么吗?
shadowDom
样式中添加了all: initial
以防止这种情况发生。也许你可以把这个作为建议加入到你的回答中。 - Božo Stojkovićinherit
[...] 是color
的默认值* - 我认为这不准确。MDN说:“CSS 属性的初始值是其定义表中列出的默认值。”,而定义表则说明color
的初始值取决于浏览器。 - OfirDinherit
。根元素的颜色取决于浏览器。这也是我测试后在浏览器中遇到的行为。 - Wazner