window.onload()与$(document).ready()的区别

本文探讨了window.onload与jQuery的$(document).ready()两种页面加载事件触发方式的不同之处,包括它们的执行时机及多次使用时的行为差异。
1、执行时机

window.onload()是在网页中所有元素包括元素的所有关联文件完全加载到浏览器后才执行的,此时javaScript此时可以访问到网页中的任何元素,而jQuery的$(document).ready()方法注册的事件处理程序,在DOM完全就需时就可以被调用。此时网页的所有元素对jQuery而言都是可以访问的,但是并不意味着这些元素的关联的文件都已经下载完毕

2、多次使用:

假使网页中有两个函数,代码如下:

function one(){
alert("one");
}

function two(){
alert("two");
}

当网页加载完毕之后,如果通过javaScript代码来分别调用这两个函数:

window.onload=one;

window.onload=two

则只会弹出第二个alert,因为javaScript的onload事件一次只能保存一个函数的引用,他会自动用后面的函数覆盖掉前面的函数,要达到两个都出发的效果,则要创建一个新的javaScript方法来实现,代码如下:

windoe.onload=function(){
one();
two();
}

运行之后会依次弹出这两个alert


而使用jQuery的$(document).ready(),代码如下:

$(document).ready(function(){
one();
})
$(document).ready(function(){
two();
})

运行之后会依次弹出这两个alert








`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、付费专栏及课程。

余额充值