如何检查document.styleSheets [i] object中是否存在属性cssRules?
我发现我不能使用
if ( sheets[i].hasOwnProperty("cssRules") )
because .cssRules is inherited property.
但是当我尝试使用
时if( sheets[i].cssRules !== undefined )
所以在调试器(Firefox 48 Toolbox工具)中我得到了异常:SecurityError。
因此代码失败。
var cssList = function(node) {
var sheets = document.styleSheets, o = {};
var sheet;
for (var i in sheets) {
if( sheets[i].cssRules !== undefined )
sheet = sheets[i].cssRules;
else
if( sheets[i].rules !== undefined )
sheet = sheets[i].rules;
else
continue;
var rules = sheets[i].rules || sheets[i].cssRules;
}
return o;
}
答案 0 :(得分:2)
您可以使用'cssRules' in sheets[i]
来检测sheets[i]
是否具有cssRules
属性。
但是,所有样式表都应具有cssRules
属性,然后您将始终获得true
。
您的问题是cssRules
getter出于安全原因抛出错误。
我认为检测它的唯一方法是使用try
语句:
try {
var rules = sheets[i].cssRules;
} catch(err) {}
if(rules) // ...
答案 1 :(得分:0)