在CDN关闭时加载jQuery的备份副本

ios*_*s85 3 javascript jquery cdn

我在用于初始化所有应用程序的脚本中有这个代码,它从谷歌CDN加载jQuery以及我们所有应用程序所需的其他几个东西.然后,当我们加载特定的程序功能时,我们检查以确保jquery已加载,以防CDN关闭.我遇到的问题是它仍在加载第二个.如果我alert("Test");在行之后添加一个简单的headTag.appendChild(jqTag);它可以很好地工作,但是如果我删除警报它会使用第二个.是什么赋予了?

他们像这样加载:

<script type="text/javascript" src="i-initializer.js"></script>
<script type="text/javascript" src="i-program.js"></script>
Run Code Online (Sandbox Code Playgroud)

初始化脚本:

if(typeof jQuery=='undefined'){
    var headTag = document.getElementsByTagName("head")[0];
    var jqTag = document.createElement('script');
    jqTag.type = 'text/javascript';
    jqTag.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js';
    headTag.appendChild(jqTag);
}
Run Code Online (Sandbox Code Playgroud)

然后在另一个脚本中我们有以下内容:

if(typeof jQuery=='undefined'){
    var header = document.getElementsByTagName("head")[0];
    var qtag = document.createElement('script');
    qtag.type = 'text/javascript';
    qtag.src = 'http://feedback.oursite.com/scripts/jquery-1.8.3.min.js';
    qtag.onload = checkjQueryUI;
    header.appendChild(qtag);
}
else
{
    jQCode();
}
jQCode() {
...
}
Run Code Online (Sandbox Code Playgroud)

Bla*_*ger 14

这是HTML5 Boilerplate使用的技术.首先,它加载Google CDN脚本,然后立即检查全局jQuery对象是否存在 - 如果不存在,则CDN失败并加载本地副本.

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.8.3.min.js"><\/script>')</script>
Run Code Online (Sandbox Code Playgroud)