我正在尝试动态加载样式表,并检查它何时准备好了cssRules属性,但是它出现为null,我看不出原因。 (镀铬)
以下是一个例子:
var href = "http://twitter.github.io/bootstrap/assets/css/bootstrap.css";
var link = document.createElement('link');
link.setAttribute('href', href);
link.setAttribute('rel', 'stylesheet');
link.setAttribute('type', 'text/css');
var intervalId = setInterval(
function(){
try{
//console.log(link.sheet);
//console.log(link.sheet.cssRules);
if(link.sheet && link.sheet.cssRules.length){
clearInterval(intervalId);
clearTimeout(timeoutId);
}
}
catch(e){
//console.log('err...' + e.message);
}
},
10);
var timeoutId = setTimeout(
function(){
clearInterval(intervalId);
clearTimeout(timeoutId);
alert('ERROR');
},
5000);
document.getElementsByTagName('head')[0].appendChild(link);
感谢您的帮助。
答案 0 :(得分:0)
您最好的选择是在link.sheet
上运行空检查,因为尝试访问link.sheet.cssRules
属性会返回此错误:
[例外......“手术不安全。”代码:“18”nsresult:“0x80530012(SecurityError)”location:“”]
请尝试此检查:
if (link.sheet != null)