📅  最后修改于: 2023-12-03 15:00:31.249000             🧑  作者: Mango
在以往的 Web 开发中,我们经常在 JavaScript 代码中使用 window.onload
函数来保证在所有文档元素都加载完成后再执行 JavaScript 代码。但是,window.onload
函数在加载慢的情况下会等待所有图片和其他资源加载完成后才会执行,而这可能会影响网页的性能和用户体验。
为了解决这个问题,jQuery 提供了 $(document).ready()
函数,用于等待 DOM 树建立完成后再执行 jQuery 代码。同时,它也与其他 JavaScript 库进行更好的兼容性。
在 jQuery 中,我们通常使用 $(document).ready(function(){})
或 $(function(){})
来执行代码。其中第二种写法其实是第一种写法的缩写,使用时需要注意两点:
例如:
$(document).ready(function(){
// 在页面 DOM 完成后执行这里的代码
console.log("DOM ready!");
});
$(function(){
// 等效于 $(document).ready(),在页面 DOM 完成后执行这里的代码
console.log("DOM ready with shortcut!");
});
在 JavaScript 中,我们可以使用 document.readyState
来判断当前页面的加载状态。当 document.readyState
为 "complete"
时,表示页面已经完全加载好了,我们可以在此时执行 JavaScript 代码。
使用方法:
// 原生 JavaScript 写法
if (document.readyState !== "loading") {
// 在加载完成后执行这里的代码
console.log("DOM ready!");
} else {
document.addEventListener("DOMContentLoaded", function(){
console.log("DOM ready!");
});
}
上述代码中,我们首先通过 document.readyState
判断页面加载状态,并在页面已经加载完成的情况下执行代码。否则,我们添加一个 DOMContentLoaded
事件监听器,等待页面加载完成后再执行代码。
需要注意的是,这里使用的是原生 JavaScript 写法,不需要使用 jQuery 库。同时,在使用 document.readyState
时需要考虑兼容性,因为在某些旧版浏览器中可能无法正常工作。
综上,$(document).ready()
函数是比较通用的,而 document.readyState
是原生的 JavaScript 方法。在保证兼容性的同时,我们可以根据具体实际情况来选择使用不同的方法。