是否需要检查jQuery库是否已加载?

时间:2014-01-18 13:48:08

标签: jquery internet-explorer google-chrome firefox

我已经多次使用过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设计人员有责任确保所有外部脚本在使用之前都已准备就绪吗?

1 个答案:

答案 0 :(得分:0)

我相信你很幸运,它有效!可能你的浏览器缓存了该文件,因此它很容易获得。是!有必要检查。我遇到了库或资源不可用的问题,例如谷歌地图。而且无法保证浏览器会做什么。当它看到内联脚本时,它会立即执行它。想想<script>document.write("hello")</script>。浏览器将异步获取多个资源以加快下载速度。

尽管如此,最佳做法是在加载整个文档后使用<body onload="initialize();">开始运行脚本。如果在单独的JS文件中有自包含脚本,则可以确保它在加载之前不会运行。我最近一直在做Coffeescript,脚本在单独的文件中,并且它们将一个处理程序附加到<body>,所以它只在页面加载时运行:

$(document).ready ->
  $("#comments").on "click", ".aComment", ->