當您將腳本附加到文檔時,它將被異步下載。在IE中,以下腳本...
try{
jQuery(document).ready(function() {
jQuery.getScript("/CalendarViewer/js/utils.js", function(){
jQuery.getScript("/CalendarViewer/js/groupcatselector.js", function(){
jQuery.getScript("/CalendarViewer/js/calendarportlet.js", function(){
jQuery.getScript("/CalendarViewer/js/calendarportletmain.js", function(){
var cpm = calendarportletmain;
cpm.doEditDefaults("V_7f208bca412b42a68c19eb104bf46f14", "/CalendarViewer", groupCats_V_7f208bca412b42a68c19eb104bf46f14);
});
});
});
});
});
}catch(err){
alert("error in view.jsp="+err.number+" "+err.description);
}
...在IE完成下載和解析jQuery腳本之前被解析並執行。如果Firefox已經對腳本進行了緩存,則Firefox中可能不會出現這種情況,下載並立即進行解析可能不會有任何時間。它可以解析器的工作方式不同,Firefox下載後解析腳本,IE排隊解析,直到線程變爲空閒。
您可以將此代碼移動到setUpJquery
函數的末尾,這意味着只有當jQuery
對象可用時纔會執行該代碼。或者,您可以將代碼放入其自己的函數中,並從setUpJquery
函數中調用該函數。
謝謝,但你看到的代碼實際上包含在幾個不同的文件中。 jQuery加載腳本用於許多不同的頁面,所以我不能在其中放置特定的代碼。有沒有其他方法可以對jQuery(document).ready()進行檢查,並且只有在jQuery實際加載後才處理它? – Zendog74 2010-05-26 12:37:54
@ Zendog74:你可以讓jQuery成爲文檔的同步部分。而不是使用DOM來追加,使用'if(typeof jQuery ==「undefined」)document.write('');'。這可以確保在其他腳本運行之前獲取jQuery。 – 2010-05-26 14:28:44
謝謝......做到了。絕對不是優雅,但它的作品。我希望IE和FFX在加載外部腳本時會表現一致,感嘆。 – Zendog74 2010-05-26 17:20:57