document.readystate of"interactive"与ondomcontentloaded?

Yan*_*sky 17 javascript dom onreadystatechange

谁能告诉我document.readyState和"DOMContentLoaded"的"交互"状态之间的区别?

我找不到关于"交互"状态的大量信息,以及在页面中可以使用的具体内容.

这个页面说:

交互式 - 已加载足够,用户可以与之交互

这看起来很像DOMContentLoaded事件.

在这里写了一个快速测试页面,似乎表明交互式readystate似乎在DOMContentLoaded事件之前可用.

那么有人可以澄清或给我一些关于在交互状态下可以在页面上操作的信息,以及它是否与DOMContentLoaded相同,如果是这样,为什么它在DOMContentLoaded之前可用?

:)

干杯,Yansky.

编辑:忘记添加,您需要运行FF4b才能使用/查看新的readystate功能.

Yan*_*esh 13

用户代理停止解析文档后,用户代理必须运行以下步骤:

  1. 将当前文档准备就绪设置为" 交互式 ",将插入点设置为未定义.

  2. 从开放元素堆栈中弹出所有节点.

  3. 如果在文档完成解析时将执行的脚本列表不为空,请运行以下子步骤:

    a.旋转事件循环,直到将在文档完成解析时执行的脚本列表中的第一个脚本设置了"准备好解析器执行"标志,并且解析器的Document没有阻止脚本的样式表.

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

    c.从文档完成解析后执行的脚本列表中删除第一个脚本元素(即移出列表中的第一个条目).

    d.如果在文档完成解析时将执行的脚本列表仍然不为空,请从子步骤a再次重复这些子步骤.

  4. 将任务排队以触发一个简单事件,该事件在Document处命名为DOMContentLoaded.... https://www.w3.org/TR/html5/syntax.html#the-end

  • 总结它的含义:1.执行解析后必须立即运行的JavaScripts执行"list-of-scripts-that-will-execute-the-document-has-finished-parsing"2.DomContentLoaded事件触发3执行JavaScripts"脚本列表 - 将尽可能快地按顺序执行"4. readyState更改为"complete"(而不是"interactive")并触发"onload"开始活动. (2认同)

Yan*_*sky 5

仅在这里回答我自己的问题,似乎该DOMContentLoaded事件等同于document.interactiveready状态。

  • 那不是很正确。根据HTML5规范,延迟脚本应在交互式和DOMContentLoaded之间执行。就是说,如果您根本不使用“ defer”,则它们几乎是等效的:因为DOMContentLoaded将遵循“ interactive”状态,在这之间做任何事情都不会影响其他脚本或文档。 (2认同)