内容脚本CSS不会覆盖原始脚本

时间:2011-05-20 20:53:01

标签: javascript css google-chrome google-chrome-extension

我想用自定义设置修改网站样式的问题。我尝试使用Content Scripts,但这种方法有效,因为它们无法覆盖原始的css文件。这是一个例子:

富/ manifest.json中

{
  "name": "test",
  "version": "1.0",
  "content_scripts": [
    {
      "matches": ["file://*/*test.html"],
      "css": ["main.css"]
    }
  ]
}

富/ main.css的

body {
  background: #0f0;
}

的test.html

<html>
  <head>
    <title>foobar</title>
  </head>

  <body style="background:#f00;">

  </body>
</html>

然后我loaded扩展foo文件夹进入我的谷歌浏览器,并打开test.html但背景颜色仍然是红色。我检查了元素,我看到了:

元素样式

body {
background: #f00;
}

用户样式表

body {
    <击> background: #0f0;
}


如何使用带有内容脚本的自定义css修改现有的css文件?
如果无法做到这一点,如何在Google Chrome专门加载页面时自动修改现有的css。

2 个答案:

答案 0 :(得分:6)

内联样式规则比从样式表导入的任何规则具有更高的先例。您可以使用!important指令来破坏此行为:

body {
  background: #0f0 !important;
}

答案 1 :(得分:1)

使用javascript,为body标签添加ID,或者包含所有内容的其他标签。然后你可以这样做:

// original rule
.someclass li a{
    color: blue;
}
// your rule
#cool-extension .someclass li a{
    color: red;
}

如果您使用原始完整选择器,并在其前面加上您的ID,则您的规则将始终优先。