我在外部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事件调用它。再次感谢您的帮助。 –