使用回退异步加载 jquery 核心

Den*_*ort 5 jquery asynchronous pagespeed

通过头中的性能优化和非阻塞脚本,我一直在尝试异步加载 jquery 本身。

我遇到了一个jQuery Loader脚本,它异步加载 jquery,然后捕获和排队 jquery 文档就绪调用。这似乎在大部分时间都有效,但并非总是如此。

因此,如果加载程序在 x 秒内未完成,我创建了一个回退来加载本地 jquery 版本。回退有效,但不完全。有些部分可能有效,有些则无效。

加载 jquery 加载器脚本后,到目前为止在 head 中调用的脚本:

<script type="text/javascript">
function loadScript(url)
{
    var head = document.getElementsByTagName('head')[0];
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = url;
    head.appendChild(script);
}

var fallback_timer = setTimeout(function() {
    loadScript('/path/to/local/js/jquery.js');
},5000);
jQl.loadjQ('//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js',function({clearTimeout(fallback_timer);});

</script>
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 任何有 jQuery Loader (jQl) 经验的人都可以帮助解决它经常失败的问题?

  2. 谁能告诉我为什么在失败的情况下,只有我的其他一些 js 脚本可以工作,而有些却一直失败?

  3. 我非常愿意使用其他一些插件/脚本/方向来异步加载 jquery 核心。

澄清一下,我不是在考虑使用 jQuery 异步加载脚本,而是在支持加载 jquery 依赖脚本的同时异步加载 jquery 本身。

小智 0

首先从CDN加载jQuery,如果没有加载成功则从本地源加载。

我会推荐以下,

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript"> window.jQuery || document.write('<script src="js/libs/jquery-1.7.2.min.js"></script>')</script>
<script type="text/javascript" src="scripts.js"></scripts>
Run Code Online (Sandbox Code Playgroud)

来自使用 Javascript 加载 jQuery 并使用 jQuery

在您的代码中,您应该仅在未加载 jQuery 时加载 jQuery,并检查 Firebug 中的文件路径是否拼写错误(“网络”选项卡)

  • 这是从具有本地回退功能的 CDN 调用 jquery 的良好且常见的方法。然而,这似乎并不能真正回答我的问题。 (3认同)