2011-07-11 54 views
4

有沒有辦法在coffeescript編譯並運行頭中的所有腳本文件後在瀏覽器中運行一些代碼? 喜歡的東西:coffeescript是否有瀏覽器的onLoad事件

coffee.onCompiled() - >的console.log 「我裝完所有的咖啡文件」

還能如何我得到這個行爲? (請不要建議setTimeout)

回答

9

起初我以爲你在問如何從CoffeeScript中附加回調到window.onload(當然,這很簡單,因爲「它只是JavaScript」),但現在我意識到你問如何確保使用coffee-script.js當所有

<script type="text/coffeescript" src="..."></script> 

標籤已經被執行後的代碼運行。

一個解決方案是在您加載的最後一個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文件中都沒有關係。)