2011-07-11 46 views
1

我想寫一個書籤,涉及到動態添加兩個腳本標籤,一個用於jQuery,另一個用jQuery寫的js腳本。我遇到的問題是,即使我首先添加jQuery腳本,js腳本也不能被讀取,因爲瀏覽器說jQuery是未定義的。我知道錯誤在於當瀏覽器添加我的js腳本時,jQuery仍然被加載,結果,瀏覽器在執行js腳本時無法識別js腳本中的jQuery。無論如何,延遲添加js腳本標籤,直到jQuery完全加載後?延遲JavaScript的加載,直到jQuery被正確加載

謝謝!

回答

2

你的腳本是怎麼樣的?

您應該將您在腳本中執行的所有操作都封裝在函數中,然後您可以從該文檔調用該函數。

例如把一切都放在功能myJqueryFunction()然後調用它:

$(document).ready(function(){ 
    myJqueryFunction(); 
}); 

,使你的代碼只執行一次,jQuery的滿載。

或者,您應該能夠使用Ajax來執行腳本,但請記住,腳本必須與文檔位於同一個域中,否則它將無法訪問DOM。

$(document).ready(function(){ 
    $.ajax("url to your script", {dataType:"script"}); 
}); 
+0

由於跨域問題,我無法使用ajax。另外我不認爲$(document).ready會工作,因爲問題是我的腳本在jQuery完成加載前加載,所以我的腳本中的函數jQuery沒有被正確讀取 – Andrew

+0

是的,事情是函數中的代碼直到函數被執行時纔會被解析,並且$(document).ready()總是看起來可以工作,但最好的建議是把它放在頁面的最後。你有沒有發佈網頁的地方?在這種情況下,我可以看看。 –

1

,大多數JavaScript程序員最終做的第一件事就是加入一些代碼,以>程序,與此類似:

window.onload = function(){ alert("welcome"); }

內部是要運行右邊的代碼當頁面被加載時。然而,問題是,直到所有圖像完成下載(這包括橫幅廣告),Javascript代碼纔會運行。首先使用window.onload的原因是,當您第一次嘗試運行代碼時,HTML「文檔」尚未完成加載。

希望此信息有助於從JQuery tutorial中剔除!

+1

編號.ready()方法通常與屬性不兼容。取自http://api.jquery.com/ready。 – stefgosselin

+2

無論如何鼓勵你在你的新帳戶,但如果你是一個長時間的用戶會下降。 – stefgosselin

0

您可以使用像LABjs這樣的腳本加載器:http://labjs.com/。它支持使用wait推遲其他腳本。

$LAB 
.script("jquery.js") 
.wait() 
.script("script.js");