在支持事件DOMContentLoaded和属性document.readyState的浏览器中
当
DOMContentLoaded触发时,我是否可以假设document.readyState的值总是"complete"或"interactive"/"loaded"? (或者可能是document.readyState有时仍然具有"loading"值?)
请在您的答复中提供权威来源的参考资料。
你可能会想:为什么不直接听readystatechange呢?这是因为Android2.3.5标准浏览器是一个目标平台,它没有实现readystatechange事件。
发布于 2012-11-12 15:45:12
当readyState被触发时,DOMContentLoaded属性的值始终是"interactive"。MDN 文档声称:
// alternative to DOMContentLoaded event
document.onreadystatechange = function () {
if (document.readyState == "interactive") {
initApplication();
}
}可以与DOMContentLoaded处理程序互换。您还可以查看规范这里,它重申了这一点。
发布于 2020-05-16 15:38:11
根据已接受的答复:
当
readyState被触发时,DOMContentLoaded属性的值始终是"interactive"。
错误
它有下列任何一项:
interactivecomplete文档readyState 参考 文档加载时返回
"loading",解析完成但仍在加载子资源时返回"interactive",加载后返回"complete"。
如果在readystatechange文档具有状态interactive之前将事件侦听器附加到interactive,则可以单独检查interactive,例如来自MDN的示例。一旦它到达这个州,人们就会抓住它。
然而,如果在稍后阶段检查状态,则不会。
同样,从MDN的例子来看,它们是相等的:
document.onreadystatechange = function () {
if (document.readyState === 'interactive') {
initApplication();
}
}
document.addEventListener("DOMContentLoaded", function () {
initApplication();
});这并不意味着:
if (document.readyState !== 'loading')
assert(document.readyState === 'interactive')答案表明。
至于说:
document.addEventListener("DOMContentLoaded", ...永远不等于:
window.addEventListener('load', ...发布于 2020-03-24 11:26:47
readyState属性的值在触发DOMContentLoaded时至少是"interactive"。正如@MTCoster所指出的,事件被推迟到具有defer属性的链接脚本和链接或内联的module脚本执行之后。另见这个职位。
https://stackoverflow.com/questions/13346746
复制相似问题