我现在正在学习异步脚本加载。我async在脚本标签-中有一个关于attr 的问题<script async src="...">。
这里是一些信息,http://www.w3schools.com/tags/att_script_async.asp,我的问题是关于- 存在时,它指定脚本将在可用时立即异步执行。线。
问题:如果我有2个脚本:
<script async src="url1.js"><script> // 200kb
<script async src="url2.js"><script> // 2kb
Run Code Online (Sandbox Code Playgroud)
并且第二个script必须在第一个之后执行(它使用一些Objects或functions从中执行)-页面加载后是否会这样?加载后,第一个脚本将首先执行,然后-第二个还是不执行?
从上面的粗体字符串(我理解这是可以理解的),它比script加载的速度更快-它的执行速度更快,并且在我们的示例中,我们会出现错误,虽然第一个script尚未加载和执行,但是第二个已经在尝试获取它。(以及何时可以使用async脚本加载?仅当我们的脚本彼此不独立时?)
lazy loading script在这种情况下,ps是获得正确脚本执行顺序的唯一方法-防止错误?
如果没有该async属性,浏览器将停止处理页面并首先下载引用的脚本;下载并执行脚本后,它将继续处理页面上的下一个标签。这有两个后果:
如果设置该async属性,浏览器将继续加载页面,而不会停止处理标签,并稍后script加载脚本。脚本加载的确切时间是未定义的,并且您不能依赖于任何特定的执行顺序。如果两个脚本之间存在依赖关系,则无法正确加载它们,因为一个脚本是否会先于另一个脚本加载完全取决于运气。async
因此,async加载仅对没有其他依赖项的脚本有用。或者:您将脚本与window.onload事件挂钩,并避免在此之前进行任何交叉引用;加载所有脚本(包括async脚本)后将触发该事件。
| 归档时间: |
|
| 查看次数: |
1406 次 |
| 最近记录: |