Document.isReady:DOM 就绪检测的本机解决方案
依赖于 Prototype 和 jQuery 等框架来管理 window.onload 事件可能不会总是令人向往。本文探讨了确定 DOM 就绪情况的替代方法,特别是通过使用 document.isReady.
查询 Document.isReady
对于具有稳定事件 API 的现代浏览器, DOMContentLoaded 事件提供了处理 DOM 就绪事件的强大方法。像下面这样的实现提供了一个简单而有效的解决方案:
function fireOnReady() { /* ... */ }
if (document.readyState === 'complete') {
fireOnReady();
} else {
document.addEventListener("DOMContentLoaded", fireOnReady);
}
jQuery 的 $.isReady 属性
jQuery 提供了一个未记录的属性 $.isReady,它在内部反映了 DOM 就绪状态。利用此属性可以进行简洁的检查:
if($.isReady) {
// DOM is ready
} else {
// DOM is not yet ready
}
值得注意的是,该属性仍未记录在案,并且无法保证其在未来 jQuery 版本中的可用性。请谨慎使用,并为升级时可能发生的变化做好准备。
自定义 DOM 就绪片段
为了更广泛的浏览器兼容性,可以使用自定义 DOM 就绪片段。受到 Dustin Diaz 方法的启发,它使用正则表达式检查 document.readyState:
if( !/in/.test(document.readyState) ) {
// document is ready
} else {
// document is NOT ready
}
此方法依赖于“in”子字符串存在于“正在加载”和“交互”就绪状态但不存在于“完成”状态的事实。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3