13 html javascript
这里说,html文档有4个readyState可能的值:
未初始化 - 尚未开始加载尚未
加载 - 正在加载
交互式 - 已加载足够且用户可以与其
完成交互- 完全加载
这里据说,基本上,defer告诉浏览器在执行该脚本块中的javascript之前等待"直到它准备好".通常这是在DOM完成加载之后document.readyState == 4
所以问题是先执行什么以及为什么 - <script defer src="...">或者window.onload=function(){...} ?
Ry-*_*Ry- 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 总是在两个事件之后发生事件.