有没有办法在coffeescript编译并运行标题中的所有脚本文件后在浏览器中运行一些代码? 类似的东西:
coffee.onCompiled() - > console.log“我已经完成了所有咖啡文件的加载”
我怎么能得到这种行为? (请不要建议setTimeout)
答案 0 :(得分:9)
起初我以为你问的是如何将一个回调附加到CoffeeScript的window.onload
(当然,这非常简单,因为“它只是JavaScript”),但现在我意识到你是询问如何确保代码在所有
<script type="text/coffeescript" src="..."></script>
使用coffee-script.js
时已执行标记。
一种解决方案是在您加载的最后一个CoffeeScript中放置回调。自1.1.0起,coffee-script.js
确保所有CoffeeScript script
标记按顺序运行(但请注意,它们只会在所有JavaScript script
标记运行后运行)。所以,例如,如果你把
<script type="text/coffeescript">
onReady()
</script>
在所有其他script
标记之后,并在其他地方定义window.onReady
,然后在加载所有脚本后调用该函数。如果你做到了
$ -> onReady()
(使用jQuery),然后您将确保DOM已准备好以及所有脚本。
更新:我发布这是“一个解决方案”,因为我不是100%确定是否有coffee-script.js
在所有脚本运行后调用的回调。但在检查the source后,我可以自信地说它没有,所以唯一的解决方案是将代码放在最后的<script type="text/coffeescript">
标记中。 (无论是内联还是.coffee
文件无关紧要。)