【发布时间】:2012-06-01 01:25:55
【问题描述】:
Radiant::loadCSS = (fn, scope) ->
head = document.getElementsByTagName("head")[0]
link = document.createElement("link")
link.setAttribute "href", "/" + ri.context + "/css/" + @obj + ".css"
link.setAttribute "rel", "stylesheet"
link.setAttribute "type", "text/css"
sheet = undefined
cssRules = undefined
if "sheet" of link
sheet = "sheet"
cssRules = "cssRules"
else
sheet = "styleSheet"
cssRules = "rules"
timeout_id = setInterval(->
try
if link[sheet] and link[sheet][cssRules].length
clearInterval timeout_id
clearTimeout timeout_id
fn.call scope or window, true, link #LINE THAT ERRORS OUT!!!
#finally
, 10)
timeout_id = setTimeout(->
clearInterval timeout_id
clearTimeout timeout_id
head.removeChild link
fn.call scope or window, false, link
, 15000)
head.appendChild link
link
所以上面是我从这里撕下来的函数的翻译:Dynamically loading css file using javascript with callback without jQuery
当我在直接的 javascript 中使用它时效果很好,但是咖啡版本在 ie8 'fn' is null or not an object 中给我带来了问题
这是该部分的渲染 javascript:
timeout_id = setInterval(function() {
try {
if (link[sheet] && link[sheet][cssRules].length) {
clearInterval(timeout_id);
clearTimeout(timeout_id);
return fn.call(scope || window, true, link); //ERROR LINE!!!
}
} catch (_error) {}
}, 10);
无论如何,我是 try 和 catch 的新手,只是不明白这里出了什么问题。提前谢谢大家!
【问题讨论】:
标签: javascript internet-explorer-8 coffeescript try-catch