$(window).load 和 $(document).ready 有什么区别?

IT技术 javascript jquery document-ready
2021-02-07 06:22:34

我最近在使用 JavaScript 代码时遇到了问题,从我的代码中取出一部分代码$(document).ready()并将其放入$(window).load()解决了问题。

现在我明白window.load是在之后被解雇了document.ready,但为什么之后还没有准备好document.ready,那就是之后window.load()

6个回答

load当所有资产加载完成时调用,包括图像。ready当 DOM 准备好交互时触发。

从 MDC,window.onload

load 事件在文档加载过程结束时触发。至此,文档中的所有对象都在DOM中,所有的图片和子框架都已经加载完毕。

来自 jQuery API 文档,.ready( handler )

虽然 JavaScript 提供了用于在呈现页面时执行代码的 load 事件,但在完全接收到所有资产(例如图像)之前不会触发此事件。在大多数情况下,只要完全构建了 DOM 层次结构,就可以运行脚本。传递给 .ready() 的处理程序保证在 DOM 准备好后执行,因此这通常是附加所有其他事件处理程序和运行其他 jQuery 代码的最佳位置。使用依赖于 CSS 样式属性值的脚本时,在引用脚本之前引用外部样式表或嵌入样式元素非常重要。

“在引用脚本之前引用外部样式表或嵌入样式元素很重要”。这与 jQuery.ready() 使用的 DOMContentLoaded 的定义形成对比:“DOMContentLoaded 事件在初始 HTML 文档完全加载和解析后触发,无需等待样式表、图像和子框架完成加载。” 异步环境中的“之前”是一个棘手的词。有没有办法保证在 .ready() 之前加载样式表?将“链接”标签放在“头部”中是否保证这一点?
2021-03-16 06:22:34

$(document).ready() 意味着您的页面的 DOM 已准备好进行操作。

window.load() 当整个页面(包括 CSS 和图像文件等组件)完全加载时触发。

你想达到什么目的?

我试图操作图像,但是当我在准备好文档时执行此操作时出现错误,但随后我看到一个片段正在执行与我想要的类似的操作,但代码中的唯一区别是它们使用了 $(window).load我正在使用 $(document).ready()
2021-03-23 06:22:34
是的,使用 $(window).load 是正确的选择。它检测您的图像是否成功加载。只需在 $(document).ready 下传递 $(window).load。所以它会像这样 $(document).ready($(window).load(){})
2021-03-26 06:22:34
$(document).ready(function(){
//code here
});

上面的代码几乎每次我们使用jQuery.

当我们想jQuery在 DOM 准备好后初始化我们的代码时使用此代码

$(window).load()

有时您想处理图片。例如,您想要垂直和水平对齐图片,并且您需要获取图片的宽度和高度才能做到这一点。随着$(document).ready()你将不能够这样做,如果游客不具有已加载的图像,在这种情况下,你需要初始化jquery当图像完成加载对准功能。这就是我们使用的地方$(window).load()

$(document).readyjQuery加载 DOM 时触发的事件,因此在文档结构准备好时触发。

$(window).load 在加载整个内容(包括 css、图像等)后触发事件。

这是主要区别。

$(document).ready() 将 DOM 包裹在 <body>...</body>

$(window).load() 是文档的爸爸将所有 DOM 包裹在 <html>...</html>

让我们在您的情况下使用来保存渲染处理。