目前的设置如下:
单击链接时,将执行以下代码:
$("#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本身中,但我认为它是串行完成这项工作的。以前有没有人遇到过这个问题,或者知道如何解决这个问题?
发布于 2012-07-13 19:04:07
我找到原因了。JQuery解析出所有脚本标记,通过AJAX请求获取源代码并对其求值。这导致了这样一个事实:无论哪个AJAX请求最先完成,都将首先求值。由于CDN在a.js之前返回b.js,导致代码崩溃。
作为一种解决办法,可以使用yepnope.js并行加载,但串行执行。或者使用requirejs。
https://stackoverflow.com/questions/10230945
复制相似问题