有什么好方法可以尝试加载the hosted jQuery at Google (或其他谷歌托管库),但如果谷歌尝试失败,加载我的jQuery副本?
我并不是说谷歌不靠谱。在某些情况下,谷歌的拷贝被屏蔽了(例如,显然是在伊朗)。
我是否需要设置一个计时器并检查jQuery对象?
两个副本都通过会有什么危险?
并不是真的在寻找像“使用Google one”或者“使用你自己的”这样的答案。我理解这些论点。我也理解用户可能会缓存Google版本。我一般都在考虑云的后备。
编辑:此部分已添加...
由于谷歌建议使用google.load加载ajax库,并在加载完成后执行回调,因此我想知道这是否是序列化这个问题的关键。
我知道这听起来有点疯狂。我只是想弄清楚这件事是否能以可靠的方式完成。
更新: jQuery现在托管在微软的CDN上。
发布于 2012-02-23 02:05:36
到目前为止,最简单、最干净的方法是:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="path/to/your/jquery"><\/script>')</script>
发布于 2012-06-27 04:41:31
如果您的站点中嵌入了modernizr.js,则可以使用内置的yepnope.js来异步加载脚本- jQuery (带回退)。
Modernizr.load([{
load : '//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'
},{
test : window.jQuery,
nope : 'path/to/local/jquery-1.7.2.min.js',
both : ['myscript.js', 'another-script.js'],
complete : function () {
MyApp.init();
}
}]);
这将从Google-cdn加载jQuery。之后会检查jQuery是否加载成功。如果不是(“not”),则加载本地版本。还加载了您的个人脚本-- "both“表示加载过程独立于测试结果启动。
当所有加载过程完成时,执行一个函数,在这个例子中是'MyApp.init‘。
我个人更喜欢这种异步脚本加载的方式。当我在构建一个站点时,我依赖于modernizr提供的功能测试,所以我把它嵌入到了站点中。所以实际上没有开销。
发布于 2011-01-28 13:49:04
if (typeof jQuery == 'undefined') {
// or if ( ! window.jQuery)
// or if ( ! 'jQuery' in window)
// or if ( ! window.hasOwnProperty('jQuery'))
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = '/libs/jquery.js';
var scriptHook = document.getElementsByTagName('script')[0];
scriptHook.parentNode.insertBefore(script, scriptHook);
}
在你尝试从CDN上收录谷歌的副本之后。
在HTML5中,您不需要设置type
属性。
您也可以使用...
window.jQuery || document.write('<script src="/libs/jquery.js"><\/script>');
https://stackoverflow.com/questions/1014203
复制相似问题