我建设使用HTML5样板4.0一个新的网站,并正在运行与它的jQuery的本地后备代码的麻烦。 有问题的代码是在这里:
<!-- <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script> -->
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.8.1.min.js"><\/script>')</script>
<script src="js/plugins.js"></script>
<script src="js/main.js"></script>
我在本地开发,现在,所以我注释掉CDN线。 我的问题是,jQuery也载荷,但它plugins.js和main.js后加载,导致不确定的错误。
我发现的最接近可能的解释是的#4点这个以前的回答 ,这表明这将是预期的,但是......上面是很容易的jQuery最常用的本地备用码,这是H5BP,这是重审核。 我必须失去了一些东西,是吗?
我回答前一段时间类似的问题。
你可以这样做:
function loadScript(pathToScript, callback) {
if (/jquery/.test(pathToScript) && window.jQuery) {
//jQuery has already been loaded so simply call the callback
callback.apply();
} else {
var head = document.getElementsByTagName("head")[0];
var script = document.createElement("script");
script.type = "text/javascript";
script.src = pathToScript + "?t=" + new Date().getTime(); //prevent caching
if (callback) {
script.onload = callback;
}
head.appendChild(script);
}
}
var scripts = ['js/vendor/jquery-1.8.1.min.js', 'js/plugins.js', 'js/main.js'];
(function (i) {
if (i < scripts.length) {
var self = arguments.callee;
loadResource(scripts[i], function () {
self(++i);
});
}
})(0);
也没有找到有关这个问题在计算器上一个确切的答案,但是,似乎这个页面所涵盖的主题:
综上所述 - 创建一个真正强大的故障恢复解决方案并不简单。 我们需要考虑浏览器incompatabilities,文件状态和事件,相关性,延迟加载和超时! 值得庆幸的工具,如LABjs存在帮助我们让我们在我们的JavaScript文件的加载完全控制缓解疼痛。
- http://happyworm.com/blog/2010/01/28/a-simple-and-robust-cdn-failover-for-jquery-14-in-one-line/
注:解决方案依赖于使用LABjs的
您可以考虑使用yepnope与后备并行加载脚本。
从他们的网站:
yepnope.js要做的资源回退,仍然与第一并行下载相关脚本的能力。
和代码:
yepnope([{
load: 'http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js',
complete: function () {
if (!window.jQuery) {
yepnope('local/jquery.min.js');
}
}
}, {
load: 'jquery.plugin.js',
complete: function () {
jQuery(function () {
jQuery('div').plugin();
});
}
}]);
我希望这帮助!