我在外部JS文件(即:test.js)中有以下代碼;如果它檢測到JQuery源不在那裏,它會創建一個指向JQuery源的附加腳本標記。該代碼實際上創建腳本標記並將其插入創建的實際腳本之前:腳本不執行動態生成的JQuery腳本標記
if (typeof(jQuery) == "undefined") {
var head = document.getElementsByTagName("head")[0];
// get any and all script tags
var scripts = document.getElementsByTagName("script");
// the actual script call the actions (ie: this one "test.js")
thisScript = scripts[scripts.length - 1];
// create element
var script = document.createElement("script");
script.setAttribute("type", "text/javascript");
script.setAttribute("src", "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js");
head.insertBefore(script,thisScript);
}
上述工作正常。但是,我遇到的問題是,一旦創建了JQuery源腳本標記,「test.js」中的其他代碼就無法工作。就好像代碼無法訪問JQuery函數(或者不知道JQuery在那裏)。
因此,在「test.js」下面的代碼不起作用:
$(document).ready(function() {
// ...
});
我根據螢火蟲與FF 12得到的錯誤是:「$沒有定義」 任何想法至於爲什麼會發生這種情況,或者我可以如何解決它?
注:我知道我可以只需將JQuery的目標頁面上;然而,這不是一個選項, 代碼必須能夠檢測到JQuery是否存在;如果不是,則創建指向JQuery的腳本標記並運行Jquery代碼。
太棒了!初始化代碼?拍我的腦袋。不知道爲什麼它沒有發生在我身上。很好的答案。謝謝! –
嘗試使用if-then控件,onload事件,settimeout和其他幾種方法來執行初始化代碼,但沒有運氣;仍然獲得'$未定義'。唉,我有限的編碼經驗只能帶我到目前爲止。我真的很感激一些指導。不要抓住require.js的東西。再次感謝您的幫助。 –
好的。閱讀hunlock dot com上的一篇文章,並找出它。在函數中包裝'$ document.ready(...',並使用變量'script'的onload事件調用它。再次感謝您的幫助。 –