Подтвердить что ты не робот

CssRules/rules имеют значение null в Chrome

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

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


EDIT:

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

4b9b3361

Ответ 1

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

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

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

где вы можете попробовать перезаписать исходные стили, указав правила с более высоким specificity.

Вы также можете просто настроить стили конкретных стилей через javascript:

document.getElementById("id").style.property="value";

Ответ 2

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