javascript - 为何你会使用 load 之类的事件 (event)?此事件有缺点吗?你是否知道其他替代品,以及为何使用它们?
阿神
阿神 2017-04-11 09:03:26
0
3
425

使用load事件的话我理解的是因为js如果要操作dom元素的话要在dom树构建完成之后才可以操作。所以通常在js代码开头加window.onload或者jQuery的$(document).ready()。
问下这个事件的缺点是什么?
还有这个事件的替代事件有什么?除了DOMContentLoaded。

阿神
阿神

闭关修行中......

membalas semua(3)
伊谢尔伦

document.readyState可以用来模拟类似情况,不过没什么必要吧,window.onload很常规的用法,好像还没听说会出什么问题。

伊谢尔伦
window.onload=fun

其实这里这个是没问题的,但是假如有你有个插件也这样写,你也这样写:

//你的代码
window.onload=fun1

//插件代码
window.onload=fun2

这里会出现什么问题呢?
很明显,fun1被替换成fun2;所以就会出现,你的代码失效了!
现在很多插件都是要等到文档加载完才执行的,所以很多插件自己内部都会这有类似window.onload的注册方法,那么大家都用window.onload来注册函数那么就会出现部分代码失效问题!

而jquery的ready方法不会出现这个问题,因为它是个函数,函数有个参数是回调函数,每执行一次就会注册一个回调,你的代码写在回调里,这样就不会出现代码失效了,即使大家都用ready这个方法。

需要一个原理的可以研究下jquery的ready函数源码

巴扎黑

楼上有说到 window.onload 互相覆盖的问题,addEventListener 即可。
这个事件本身没什么问题,应用场景的话我主要是做一些数据的加载和空闲时间资源的请求,例如从 localstorage 里加载一些东西。(不过细节时间点的控制,由于我做的是 SPA,所以是在内部页面生命周期里控制的)
于此对应的可能还会用到一些事件,如 unloadpagehide 之类的。

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!