$(window).on(‘load’)和$(document).ready以及window.onload执行顺序
文章摘要:对于网页里js执行前后顺序控制有两种形式,一种是dom完成后,一种是网页所有资源后执行。对于第一种DOM完成后执行也是比较常见的,在网页DOM完成后能避免很多语法错误,不至于查询DOM元素错误。 DOM完成后执行 网页结构加载完即可,不管网...
对于网页里js执行前后顺序控制有两种形式,一种是dom完成后,一种是网页所有资源后执行。对于第一种DOM完成后执行也是比较常见的,在网页DOM完成后能避免很多语法错误,不至于查询DOM元素错误。
DOM完成后执行
网页结构加载完即可,不管网页的图片,视频等资源。对于jquery是以下形式,就是在网页DOM结构完成后执行
$(document).ready(function(){ // code }) //或者简写为: $(function(){ // code })
jquery的ready()函数实际上监听的是DOMContentLoaded,可以原生写法
document.addEventListener("DOMContentLoaded", function(){ //code },false);
资源完全加载后执行
在网页资源(包括网页的图片,视频等)加载完毕后执行,jquery可以用
$(window).on('load',function(){ //code }) //低版本 3.4.1之前还可以用 //高版本切不可用,会报错“TypeError: e.indexOf is not a function” $(window).load(function(){ //code })
3.4.1以上高版本弃用了load()方法,切不可用,会报错“TypeError: e.indexOf is not a function”
另外原生js里也有类似方法,至于两者区别就是原生的js方法会被覆盖掉,如果存在多个,只会执行最后一个。
window.onload=function(){ //code }
关于三者之间的执行顺序,按照理解可能想都不用想,当然是DOM完成后的执行在先,可以真的如此吗?这需要看情况而言,当网页结构很简单,会发现DOM后执行的代码会被先执行,看同样的js部分:
$(window).on('load',function(){ console.log("window jquery 1") }) $(document).ready(function(){ console.log("document jquery 1") }) $(window).on('load',function(){ console.log("window jquery 2") }) $(document).ready(function(){ console.log("document jquery 2") }) window.onload=function(){ console.log("window js 1") } window.onload=function(){ console.log("window js 2") }
在HMTL结构比较简单的时候,也无须加载任何其他资源:
<div id="box"> <div id="content1"></div> <div id="content2"></div> <div id="content3"></div> </div>
打印出来的顺序如下图,可以很清楚知道DOM完成的速度慢于资源加载后的
但是当我们增加网页结构,让网页资源增加点东西:
<div id="box"> <div id="content1"></div> <div id="content2"></div> <div id="content3"></div> <iframe src="https://blog.csdn.net/caimouse"></iframe> </div>
打印出来的顺序就是我们想当然的,DOM加载快于资源加载,这也是我们比较常见的模式,因为一个网页开发里少不了图片等资源,尤其是资源过大,是时间间隔会更大。
知道了这些个差异,可以在网页开发中发现很多不经意的错误,如果我们想计算一个被动态追加添加元素的父元素区块的尺寸问题,自然是要在资源加载完毕后执行,或者在添加元素函数之后。
版权免责申明
① 本站源码模板等资源SVIP用户永久不限量免费下载
② 所有资源来源于网络收集,如有侵权,请联系站长进行删除处理。
③ 分享目的仅供大家学习和交流,请不要用于商业用途,否则后果自负。
④ 如果你有源码需要出售,可以联系管理详谈。
⑤ 本站提供的源码、模板、插件等等资源,都不包含技术服务请大家谅解。
⑥ 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需。
⑦ 在您的能力范围内,为了大环境的良性发展,请尽可能的选择正版资源。
⑧ 网站资源绝不做任何二次加密或添加后门(原版加密除外)
① 本站源码模板等资源SVIP用户永久不限量免费下载
② 所有资源来源于网络收集,如有侵权,请联系站长进行删除处理。
③ 分享目的仅供大家学习和交流,请不要用于商业用途,否则后果自负。
④ 如果你有源码需要出售,可以联系管理详谈。
⑤ 本站提供的源码、模板、插件等等资源,都不包含技术服务请大家谅解。
⑥ 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需。
⑦ 在您的能力范围内,为了大环境的良性发展,请尽可能的选择正版资源。
⑧ 网站资源绝不做任何二次加密或添加后门(原版加密除外)
常见问题F&Q
- 需要积分的资源怎么下载?
- 您可以注册后签到等活跃动作获得积分,积分可下载,也可充值升级等级免费下载。
- 源码模板等文件安全吗?有没有后门病毒吗?
- 站内资源标有“已测试”标签的资源源码,表示已经在本地安装测试调试过才分享出来的,可以保证一定的安全;若不放心可以自行下载模板资源后使用D盾等查杀工具扫一遍确认安全。
- 本站网站模板等源码提供安装服务吗?
- 本站资源收集于网络并分享出来共同学习,不提供免费安装服务,模板源码安装等需要有一定熟悉度,小白用户可以下载资源后雇人安装调试。