Window.onload与脚本延迟

时间:2014-12-04 17:19:45

标签: javascript html

Here据说,html文档有 4 readyState 可能的值:

  

未初始化 - 尚未开始加载尚未加载 - 正在加载
  交互式 - 已经足够加载,用户可以与之交互   完成 - 满载

Here据说基本上,defer告诉浏览器在执行该脚本块中的javascript之前等待“直到它准备就绪”。通常这是在DOM完成加载和document.readyState == 4

之后

所以问题是先执行什么以及为什么 - <script defer src="...">window.onload=function(){...} ?

1 个答案:

答案 0 :(得分:14)

继续阅读http://www.w3.org/html/wg/drafts/html/master/scripting-1.html#attr-script-defer

  

使用这些可以选择三种可能的模式   属性。如果存在async属性,那么脚本将是   一旦可用就异步执行。 如果async   属性不存在但defer属性存在,然后是   页面完成解析后执行脚本。如果两者都没有   属性存在,然后获取并执行脚本   在用户代理继续解析页面之前立即执行。

http://www.w3.org/TR/html5/syntax.html#the-end告诉您延迟脚本首先运行:

  

...
  执行脚本列表中的第一个脚本,该脚本将在文档完成解析后执行   ...

然后是DOMContentLoaded事件:

  

将任务排队以在Document上触发名为DOMContentLoaded的气泡的简单事件。

load事件在这两件事之后总会发生。