cssRules/Regeln null in Chrom
Meine chrome-Erweiterung ändern muss bestimmte css-Regeln auf Benutzer-Seite. Zugriff auf Formatvorlagen über document.styleSheets
erlaubt den Zugriff nur mit styles verknüpft sind innerhalb der gleichen Domäne. Andere Elemente der document.styleSheets
array haben cssRules/rules
auf null gesetzt.
Warum ist es, cross-domain-policy gilt hier? Stile angewendet werden sowieso unabhängig von Ihrer Herkunft, so was ist der Punkt? Und wie man sich es in meinem Fall?
EDIT:
Den Grund brauche ich zum ÄNDERN von Benutzer-css-Regeln (im Gegensatz zu einfach hinzufügen meiner eigenen), die ich brauche, um zu schützen das custom-element injiziert durch die Erweiterung beeinträchtigt durch *
Regeln. siehe details in dieser Frage
- Würde es helfen, eine komplette CSS-reset auf alle Elemente, die Sie hinzufügen?Vielleicht würde das helfen: stackoverflow.com/questions/4966030/...
- Ja, ich bin ein bisschen denken in die gleiche Richtung.
- Sie könnten die !wichtig Modifizierer override andere Stile.
- Ich habe das gleiche problem. Wenn ich die Iteration über das cssRules zum ändern einiger Eigenschaften Global, merkte ich, dass das cssRules der externen css sind null, was hat die wichtigsten Regeln
- Scheint eine Sicherheit berücksichtigt. Siehe die Diskussion hier: bugs.chromium.org/p/chromium/issues/detail?id=143626#c11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Content-Skripte haben keine cross-domain-Rechte im Vergleich zu einem regulären javascript, damit irgendwelche Einschränkungen übernommen werden. Siehe Verwandte Frage #1, Frage #2.
Können Sie injizieren Ihre eigenen css-Stil im manifest:
wo können Sie versuchen, zu überschreiben die ursprüngliche Stile durch die Definition von Regeln mit höheren Spezifität.
Können Sie auch einfach tweak Beton-element-Stile durch javascript:
The only real solution to this problem is to CORS load your CSS in the first place. By using a CORS xmlHTTPRequest to load the CSS from an external domain, and then injecting the responseText...
Ich meine Feste version wird das Problem durch die änderung der url von http://zu https://. Doh!