【发布时间】:2014-01-18 13:48:07
【问题描述】:
我已经多次使用jQuery,但我才意识到虽然我没有做任何事情来等待或检查要加载的jQuery插件,但运行jQuery代码并没有遇到问题。我的典型代码是:
<html>
...
<script type="text/javascript" src="http://codeorigin.jquery.com/jquery-1.10.2.min.js"></script>
...
<body>
...
</body>
<script>
//jQuery code, eg:
$('#xxx').load('yyyy.html');
... // more code
</script>
</html>
然后最近,我遇到了来自 codeorigin.jquery.com 的文件有时会失败或需要大约 20 秒才能加载。使用 Chrome 时,我注意到 Chrome 不会呈现 html 页面,也不会执行其中的 JavaScript 代码,直到引用的外部脚本文件的加载活动完成(可能是成功或失败)。这太棒了。
我的问题:在呈现和执行 html 页面之前,浏览器总是等待页面中引用的所有外部脚本的加载完成,这是一个标准的浏览器规范吗?还是浏览器只是按顺序执行页面,等待每个页面完成后再移动到下一行,而不是异步执行?还是没有明确的顺序,网页设计师有责任确保所有外部脚本在使用前都准备好?
【问题讨论】:
-
加载不是异步的。如果您将脚本放在标题中,它们将在到达正文之前加载并执行。
-
同意,将您的脚本标签移动到正文的底部。除非您添加 async 或 defer 属性,否则该脚本将在您运行其后列出的任何内容之前进行评估。
标签: jquery internet-explorer google-chrome firefox