coffeescript是否为浏览器提供了onLoad like事件

时间:2011-07-11 21:38:50

标签: coffeescript

有没有办法在coffeescript编译并运行标题中的所有脚本文件后在浏览器中运行一些代码? 类似的东西:

  

coffee.onCompiled() - > console.log“我已经完成了所有咖啡文件的加载”

我怎么能得到这种行为? (请不要建议setTimeout)

1 个答案:

答案 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文件无关紧要。)