我在外部 JS 文件中有以下代码(即:test.js);如果它检测到 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 的 FireBug,我得到的错误是:“$ 未定义” 关于为什么会发生这种情况或如何解决它的任何想法?
注意:我知道我可以将 JQuery 放在目标页面上;但是,这不是一个选项,因为代码必须能够检测 JQuery 是否存在;如果没有,则创建指向 JQuery 的脚本标记并运行 Jquery 代码。