cssRules / rules имеют нулевое значение в Chrome - PullRequest
26 голосов
/ 15 апреля 2011

Мое расширение chrome должно изменить некоторые правила CSS на странице пользователя. Доступ к стилям через document.styleSheets дает доступ только к стилям, связанным внутри одного домена. Для других элементов массива document.styleSheets cssRules/rules имеет значение null.

Почему здесь применяется междоменная политика? Стили применяются в любом случае независимо от их происхождения, так какой смысл? И как обойти это в моем случае?


EDIT:

Причина, по которой мне нужно ИЗМЕНИТЬ пользовательские правила CSS (в отличие от простого добавления моих собственных), заключается в том, что мне нужно защитить пользовательский элемент, введенный расширением, от воздействия правил *. подробности в этом вопросе

Ответы [ 2 ]

6 голосов
/ 15 апреля 2011

Сценарии содержимого не имеют междоменных привилегий по сравнению с обычным javascript, поэтому любые ограничения переносятся.См. Связанный вопрос № 1 , вопрос № 2 .

Вы можете ввести свой собственный стиль CSS в манифесте:

"content_scripts": [
    {
      "matches": ["http://www.google.com/*"],
      "css": ["mystyles.css"]
    }
]

там, где выможно попытаться перезаписать исходные стили, задав правила с более высокой специфичностью .

Вы также можете просто настроить стили конкретных элементов с помощью JavaScript:

document.getElementById("id").style.property="value";
0 голосов
/ 15 марта 2016

Я исправил свою версию проблемы, изменив URL с http: // на https: //. Doh!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...