Jquery .ajax以错误的顺序加载脚本

时间:2012-04-19 15:01:11

标签: jquery ajax

目前的设置如下:

单击链接时,将执行以下代码:

$("#main-content").load(url);

我们加载到主内容中的网址主要是html,顶部有3个脚本标记,底部有3个脚本标记(已加载)。

代码本身工作正常,本地没有问题,但是一旦我们推送网站并添加了CDN,Javascript就开始失败了。经过进一步检查后,看来脚本不是由JQuery串行加载的。即使我们已经定义了以下脚本:

<script type="text/javascript" src="a.js"></script>
<script type="text/javascript" src="b.js"></script>
<script type="text/javascript" src="c.js"></script>

a.js具有比b.js更大的延迟并且稍后进行评估,从而产生JS错误。

我知道JQuery会解析JS文件并将它们附加到dom本身,但我认为它是连续执行的。有没有人遇到过这个问题或有任何想法如何修复它?

1 个答案:

答案 0 :(得分:1)

我找到了原因。 JQuery解析所有脚本标记,通过AJAX请求获取源代码并进行验证。这导致事实上,无论AJAX请求首先完成,都将首先被唤醒。由于CDN在a.js之前返回了b.js,代码就破了。

作为解决方法,使用yepnope.js并行加载但串行执行。或者使用requirejs。