window.onload与$(document).ready()执行时间

本文深入探讨了页面加载过程中的onload事件与$(document).ready()方法的区别,阐述了两者在不同场景下的应用及优先级,特别关注于在IE中嵌入frame时的行为差异。
onload事件是在所有资源都准备完成之后才执行。
$(document).ready()该方法实现的页面加载后 执行函数将在浏览器构建完DOM树后立刻执行,而并不需要等待图片等外部资源下载完成。

而window.onload会在整个文档都加载完成后才会执行,常见的就是对于页面含很多图片的情况下,必须等到图片都下载 下来后才会执行。而$(document).ready()不会。

$(document).ready()会优于window.onload先执行.


另一种情况:
IE在页面中嵌入frame中的情况下才和Firefox等一样,先执行$(document).ready()的内容, 再执行原来的onload方法。对于嵌入frame中的页面,也只是绑定在load事件上执行,所以自然是在原来的onload绑定的方法执行之后才轮 到。而这个页面中正好在测试环境下有一个访问不到的资源,那十几秒的延迟正是它放大出的时间差。
(待验证)
`window.onload` `$(async () => {` 是 JavaScript 中用于在特定时机执行代码的两种不同方式,它们存在以下区别: ### 触发时机 - **`window.onload`**:该事件会在整个页面(包括所有资源,如图片、样式表等)完全加载完成后触发。这意味着只有当页面上的所有元素都被下载并渲染完毕,才会执行 `window.onload` 中的代码。示例代码如下: ```javascript window.onload = function() { console.log('页面所有资源加载完成'); }; ``` - **`$(async () => {`**:这是 jQuery 中的 `$(document).ready()` 方法的异步函数写法。`$(document).ready()` 会在 DOM 树构建完成后立即执行,而不需要等待所有资源(如图片)加载完成。示例代码如下: ```javascript $(async () => { console.log('DOM 树构建完成'); }); ``` ### 依赖情况 - **`window.onload`**:属于原生 JavaScript 的事件,不依赖任何第三方库,可直接在纯 JavaScript 项目中使用。 - **`$(async () => {`**:依赖 jQuery 库,若项目中未引入 jQuery,代码将无法正常工作。 ### 代码执行顺序 - **`window.onload`**:由于要等待所有资源加载完成,执行时间可能会较晚。如果页面包含大量图片或其他大型资源,`window.onload` 中的代码可能会延迟执行。 - **`$(async () => {`**:因为只等待 DOM 树构建完成,通常会比 `window.onload` 更早执行,能让用户更快地页面进行交互。 ### 异步处理 - **`window.onload`**:本身不具备异步处理能力,若要处理异步操作,需手动编写异步代码,如使用 `Promise`、`async/await` 等。 - **`$(async () => {`**:可以结合 `async/await` 语法,方便地处理异步操作。例如: ```javascript $(async () => { try { const response = await fetch('https://example.com/api'); const data = await response.json(); console.log(data); } catch (error) { console.error('请求出错:', error); } }); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值