window.onload和$(function(){})区别

window.onload是js原生的事件,$(function(){})是Jquery的方法(等价于$(document).ready(function(){}) ),两者主要有以下几点差别:


1、window.onload:在页面所有资源加载完后执行,如果有多个定义则只执行最后一个

2、$(function(){}):在Dom节点创建完成后执行,如果有多个定义则依次执行

可以看出$(function(){})在window.onload前执行


比如:页面中只有一个img标签,当img节点创建完后就会执行$(function(){})中的代码,当img的src指定的图片完全加载完后才会触发window.onload事件。


### 正确设置使用 `window.onload` 函数 在 JavaScript 中,`window.onload` 是一个事件处理程序属性,用于指定当整个页面完全加载完成后要运行的脚本。这包括所有的依赖资源如样式表、图像其他媒体文件。 如果直接给 `window.onload` 赋值一个新的函数,则会覆盖之前已经赋好的任何其他 `onload` 处理器[^1]: ```javascript // 这种方式会导致后者覆盖前者 window.onload = one; window.onload = two; // 后者覆盖了前者, 只有 "two" 会被触发 ``` 为了确保可以注册多个负载事件处理器而不互相干扰,应该采用一种方法来安全地附加额外的功能而不会丢失现有的行为。下面是一个实用的例子展示如何实现这一点: #### 安全添加多个 `onload` 事件处理器 通过创建辅助函数 `addLoadEvent` 来管理这些回调,这样就可以多次调用此函数并累积所有希望被执行的任务列表,而不是简单替换掉原来的 `onload` 属性值[^2]: ```javascript function addLoadEvent(func){ var oldOnload = window.onload; if (typeof oldOnload !== 'function'){ window.onload = func; } else { window.onload = function(){ oldOnload(); func(); }; } } // 使用自定义的帮助函数添加两个不同的操作 addLoadEvent(function (){ console.log('First task completed'); }); addLoadEvent(function (){ console.log('Second task also done!'); }); ``` 这种方法允许开发者在一个页面上轻松地安排一系列按顺序执行的动作,在不破坏原有逻辑的前提下扩展功能。 值得注意的是,虽然上述技术有效解决了多监听器的问题,但在现代浏览器环境下推荐使用更灵活且不易出错的方式——即利用 `addEventListener()` 方法来订阅 `load` 事件,它支持同一类型的多个独立监听器,并且语法更加直观清晰[^3]。 对于那些熟悉 jQuery 的开发人员来说,也可以考虑使用其提供的 `.ready()` 或简化的 `$()` 形式的文档就绪状态检测机制作为替代方案之一[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值