我已经多次使用过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页面之前,浏览器总是会等待加载页面中引用的所有外部脚本吗?或者浏览器是否仅按顺序执行页面,等待每个页面完成后再移动到下一行,而不是异步?或者没有定义的顺序,Web设计人员有责任确保所有外部脚本在使用之前都已准备就绪吗?
答案 0 :(得分:0)
我相信你很幸运,它有效!可能你的浏览器缓存了该文件,因此它很容易获得。是!有必要检查。我遇到了库或资源不可用的问题,例如谷歌地图。而且无法保证浏览器会做什么。当它看到内联脚本时,它会立即执行它。想想<script>document.write("hello")</script>
。浏览器将异步获取多个资源以加快下载速度。
尽管如此,最佳做法是在加载整个文档后使用<body onload="initialize();">
开始运行脚本。如果在单独的JS文件中有自包含脚本,则可以确保它在加载之前不会运行。我最近一直在做Coffeescript,脚本在单独的文件中,并且它们将一个处理程序附加到<body>
,所以它只在页面加载时运行:
$(document).ready ->
$("#comments").on "click", ".aComment", ->