7 Stimmen

Content Scripts CSS überschreibt das Original nicht

Mein Problem ist, dass ich einen Stil einer Website mit meinen eigenen Einstellungen ändern möchte. Ich habe versucht mit Inhaltliche Skripte aber das funktioniert nicht, weil sie die Original-CSS-Dateien nicht überschreiben können. Hier ist ein Beispiel:

foo/manifest.json

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

foo/main.css

body {
  background: #0f0;
}

test.html

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

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

  </body>
</html>

Dann i geladen die Erweiterung foo Ordner in meinem Google Chrome, und öffnete die test.html aber die Hintergrundfarbe noch rot. Ich inspizierte das Element und ich sah, dass:

Element Stil

body {
background: #f00;
}

Benutzer-Stylesheet

body {
background: #0f0;
}


Wie kann ich mit Content Scripts eine bestehende CSS-Datei mit meinem eigenen CSS ändern?
Wenn dies nicht möglich ist, wie kann ich automatisch ein bestehendes css mit meinem benutzerdefinierten ändern, wenn die Seite in Google Chrome lädt speziell.

6voto

Andrew Hare Punkte 332190

Eine Inline-Stilregel hat Vorrang vor allen Regeln, die aus einem Stylesheet importiert werden. Sie können die !important Richtlinie, um dieses Verhalten zu unterlaufen:

body {
  background: #0f0 !important;
}

1voto

CocaLeaf Punkte 321

Fügen Sie dem Body-Tag oder einem anderen Tag, der alles umfasst, mit Javascript eine ID hinzu. Dann können Sie dies tun:

// original rule
.someclass li a{
    color: blue;
}

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

Wenn Sie den ursprünglichen vollständigen Selektor verwenden und ihm Ihre ID voranstellen, hat Ihre Regel immer Vorrang.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X