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
只是不明白这里出了什么问题。提前谢谢大家!