0

目前的设置如下:

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

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

我们加载到 main-content 中的 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 本身,但我认为它是串行执行的。有没有人遇到过这个问题或者对如何解决它有任何想法?

4

1 回答 1

1

我找到了原因。JQuery 解析出所有脚本标签,通过 AJAX 请求获取源并对其进行评估。这导致无论哪个 AJAX 请求首先完成,都将首先被评估。由于 CDN 在 a.js 之前返回 b.js,因此代码中断。

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

于 2012-07-13T11:04:06.783 回答