2015-05-05 43 views
3

每當我嘗試在單獨的paperscript標記中調用javascript函數時,都會收到未捕獲的引用錯誤。我嘗試了測試代碼嘗試調用函數時引用錯誤

HTML體:

<canvas id="c"></canvas> 
<script type="text/javascript" src="vendor/paper.js"></script> 
<script type="text/paperscript" src="foo1.js" canvas="c"></script> 
<script type="text/javascript" src="foo2.js"></script> 

畫布將不會在這個例子中使用,它只是一些paper.js需求而努力。

所以對於腳本:

foo1.js(paperscript)

function blah(){ console.log("blah"); } 

foo2.js(JavaScript的)現在

window.onload = function{ blah(); } 

,如果我加載HTML,控制檯告訴我blah()拋出一個引用錯誤。但是,如果我改變

type="text/paperscript" 

type="text/javascript" 

爲foo1.js,那麼控制檯將顯示 「嗒嗒」 並不會引發錯誤。爲什麼是這樣?

+3

這可能與瀏覽器如何運行的JavaScript做。通常,瀏覽器會在運行任何代碼之前等待所有腳本加載。但是因爲'foo1.js'是'text/paperscript',它會被跳過,'foo2.js'會立即運行。確保'foo2.js'中的代碼在'foo1.js'上有魔術效果後運行 – Halcyon

回答

0

瀏覽器將只加載類型爲「text/javascript」的腳本。 paperscript庫可以爲window.onload觸發的類型爲「text/paperscript」的腳本加載器。嘗試添加事件偵聽器,以免寫入現有的加載器。

例子:

function myInit() { 
blah(); 
} 

if (window.addEventListener) { 
    window.addEventListener('load', myInit, false); 
} else if (window.attachEvent) { 
    window.attachEvent('onload', myInit); 
} 
相關問題