大部分我最近的工作一直围绕异步加载外部脚本 。 当脚本加载正常的方式( <script src="...">
)他们阻止所有其他的下载页面下面的脚本被禁止从任何元素渲染。 此可以看出,在将底部的例子的脚本 。 异步加载脚本避免这种阻止行为,导致更快的加载页面。
异步加载脚本的一个问题是处理内嵌脚本使用外部脚本中定义的符号。 如果外部脚本异步加载内嵌代码而不思,竞争条件可能会导致未定义符号错误。 这是必要的,以确保外部异步脚本和内嵌脚本加上在这样一种方式,内联代码不被执行,直到异步脚本完成加载后。
夫妇异步脚本内嵌脚本有几种方法。
- 窗口的onload -内嵌代码可以绑到窗口的onload事件。 这是非常简单的实现,但内嵌代码将不会被执行,因为它可以早。
- 脚本的onreadystatechange -内嵌代码可连接到脚本的onreadystatechange和onload事件。 (您需要实现既涵盖所有流行的浏览器。)此代码是更长,更复杂,但确保内嵌代码被称为一旦脚本完成加载。
- 硬编码回调 -外部脚本可以通过回调函数进行修改,以明确开球内嵌脚本。 这是正常的,如果外部脚本和内嵌脚本由同一个团队正在开发中,但不提供所需的灵活性夫妇第三方内嵌代码的脚本。