首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >document.readyState on DOMContentLoaded?

document.readyState on DOMContentLoaded?
EN

Stack Overflow用户
提问于 2012-11-12 15:41:36
回答 3查看 17K关注 0票数 15

在支持事件DOMContentLoaded和属性document.readyState的浏览器中

DOMContentLoaded触发时,我是否可以假设document.readyState的值总是"complete""interactive"/"loaded"? (或者可能是document.readyState有时仍然具有"loading"值?)

请在您的答复中提供权威来源的参考资料。

你可能会想:为什么不直接听readystatechange呢?这是因为Android2.3.5标准浏览器是一个目标平台,它没有实现readystatechange事件。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-12 15:45:12

readyState被触发时,DOMContentLoaded属性的值始终是"interactive"。MDN 文档声称:

代码语言:javascript
复制
// alternative to DOMContentLoaded event
document.onreadystatechange = function () {
  if (document.readyState == "interactive") {
    initApplication();
  }
}

可以与DOMContentLoaded处理程序互换。您还可以查看规范这里,它重申了这一点。

票数 11
EN

Stack Overflow用户

发布于 2020-05-16 15:38:11

根据已接受的答复:

readyState被触发时,DOMContentLoaded属性的值始终是"interactive"

错误

它有下列任何一项:

  • interactive
  • complete

文档readyState 参考 文档加载时返回"loading",解析完成但仍在加载子资源时返回"interactive",加载后返回"complete"

如果在readystatechange文档具有状态interactive之前将事件侦听器附加到interactive,则可以单独检查interactive,例如来自MDN的示例。一旦它到达这个州,人们就会抓住它。

然而,如果在稍后阶段检查状态,则不会。

同样,从MDN的例子来看,它们是相等的:

代码语言:javascript
复制
document.onreadystatechange = function () {
  if (document.readyState === 'interactive') {
    initApplication();
  }
}


document.addEventListener("DOMContentLoaded", function () {
    initApplication();
});

这并不意味着:

代码语言:javascript
复制
if (document.readyState !== 'loading')
    assert(document.readyState === 'interactive')

答案表明。

至于说:

  • document.addEventListener("DOMContentLoaded", ...

永远不等于:

  • window.addEventListener('load', ...
票数 6
EN

Stack Overflow用户

发布于 2020-03-24 11:26:47

readyState属性的值在触发DOMContentLoaded时至少是"interactive"。正如@MTCoster所指出的,事件被推迟到具有defer属性的链接脚本和链接或内联的module脚本执行之后。另见这个职位

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13346746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档