我正在使用代码from a blog,这与this SO question的答案中的代码非常相似。
我的问题是代码使jQuery包含了很好的,但由于某种原因,之后的脚本无法识别jQuery被加载。我做错了什么?
I've placed the code in a jsFiddle.
if (!window.loadjQueryOnce)
{
function loadjQueryOnce(jQueryVersion)
{
jQueryVersion = typeof(jQueryVersion) != 'undefined' ? jQueryVersion : "1.7.2";
if (typeof jQuery === "undefined") {
var script_tag = document.createElement('script');
script_tag.setAttribute("type","text/javascript");
script_tag.setAttribute("src",
"http://ajax.googleapis.com/ajax/libs/jquery/" + jQueryVersion + "/jquery.min.js")
document.getElementsByTagName("head")[0].appendChild(script_tag);
}
}
}
答案 0 :(得分:2)
问题是你不是在等待HTML中的调用之前执行脚本。 See this example,它使用您提到的博客中的代码。您需要在main
函数中放置依赖于jQuery的代码。
答案 1 :(得分:1)
当您将loadjQueryOnce('1.7.2')
行移动到上面检查jQuery的位置时,jQuery会正确加载。 http://jsfiddle.net/JfWeG/2/所以,我不确定你在哪里做检查,但代码确实有效。
如果你想在加载依赖它的JS文件之前确保加载jQuery,那么要么在加载jQuery之后更改你的函数来加载它们,要么在每个使用它的脚本之前检查jQuery。
// Load jQueryUI
if (!jQuery) loadjQueryOnce();
loadjQueryUI();
if (!jQuery) loadjQueryOnce();
loadjQueryDepedentScript();
它很笨重,但它确实有效。如果您让我们更好地了解您为什么这样做,我们可以帮助您找到更好的解决方案。
你最好的选择就是创建一个模板,其中jQuery是头部加载的第一件事:
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
...
</head>
答案 2 :(得分:0)
看起来像是时间问题。如果在检查之前创建一个小延迟,它可以正常工作。
<script type="text/javascript">
setTimeout(function() {
if (typeof jQuery === "undefined") {
alert('Not recognizing jQuery');
}
}, 100);
</script>
<强> jsFiddle example 强>