Я не могу запросить cssRules, если @import присутствует в таблице стилей css. Ожидается ли это в соответствии с веб-стандартом? Или это ограничение Firefox?
Примечание: я импортирую css-файл из того же домена.
var style_rules = document.styleSheets[0].cssRules;
console.log(style_rules);
Параметр или операция не поддерживается базовым объектом [Break On This Error] var style_rules = document.styleSheets[0].cssRules;
Dennis и Friedrich должны взять курс в понимании прочитанного. Если document.styleSheets[0].cssRules
сбои затем, очевидно, их код также перестанет работать в if (styleSheet.cssRules) {
и console.log(document.styleSheets[0].cssRules[0].styleSheet.cssRules[0].cssText);
соответственно. Серьезно, что проку в регистрации ответа, в который Вы помещаете нулевую мысль?
С этим из пути, мое гостевое предположение на основе ограниченной информации, которую Вы предоставляете, - то, что Вы получаете DOMException вЂInvalidAccessError’, потому что таблица стилей еще не была полностью передана с сервера на Ваш компьютер, когда код JavaScript работает.
, Если это верно, необходимо будет обработать событие загрузки для элемента HTML, который владеет таблицей стилей.
try
{
var rules = styleSheet.cssRules;
}
catch(x)
{
if(x instanceof DOMException && x.name == "InvalidAccessError")
styleSheet.ownerNode.addEventListener("load", functionToRunWhenItLoads);
}
можно адаптировать вышеупомянутый код к собственным целям. Заботьтесь однако, что некоторые браузеры даже не добавляют таблицу стилей к document.styleSheets
, пока таблица стилей не заканчивает загружаться, таким образом, Вы могли бы все еще пропустить ее тот путь. Вы, возможно, должны обработать событие загрузки объекта окна для контакта с тем случаем, или возможно лучше не пройти document.styleSheets
во-первых.