fek*_*lee 7 javascript dom cross-browser dom-events
在支持事件DOMContentLoaded
和属性的浏览器中document.readyState
:
当
DOMContentLoaded
火灾,我可以假设的价值document.readyState
永远是两种"complete"
或"interactive"
/"loaded"
?(或者可能
document.readyState
有时仍然有价值"loading"
?)
在您的回答中,请提供权威来源的参考.
你可能想知道:为什么不听readystatechange
呢?这是因为Android 2.3.5标准浏览器是一个目标平台,并没有实现该readystatechange
事件.
该readyState
属性的值始终"interactive"
在DOMContentLoaded
触发时.MDN 文档证明了这一点声称:
// alternative to DOMContentLoaded event
document.onreadystatechange = function () {
if (document.readyState == "interactive") {
initApplication();
}
}
Run Code Online (Sandbox Code Playgroud)
可以与DOMContentLoaded
处理程序互换.你也可以看看这里的规范,重申这一点.
小智 5
根据接受的答案:
readyState
属性的值总是"interactive"
在DOMContentLoaded
触发时。
它具有以下任一项:
interactive
complete
文档 。准备状态 参考。
"loading"
在文档加载时返回,"interactive"
一旦完成解析但仍在加载子资源,以及"complete"
一旦加载。
如果readystatechange
在Document 具有状态之前附加一个事件侦听器,则interactive
可以interactive
单独检查,例如来自 MDN 的示例。然后,如果它到达它,就会捕获该状态。
但是,如果在稍后阶段检查状态,则不会。
同样来自 MDN 的例子,这些是相等的:
document.onreadystatechange = function () {
if (document.readyState === 'interactive') {
initApplication();
}
}
document.addEventListener("DOMContentLoaded", function () {
initApplication();
});
Run Code Online (Sandbox Code Playgroud)
这并不意味着:
if (document.readyState !== 'loading')
assert(document.readyState === 'interactive')
Run Code Online (Sandbox Code Playgroud)
答案表明。
至于说:
document.addEventListener("DOMContentLoaded", ...
永远不会等于:
window.addEventListener('load', ...
归档时间: |
|
查看次数: |
8152 次 |
最近记录: |