84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
使用load事件的话我理解的是因为js如果要操作dom元素的话要在dom树构建完成之后才可以操作。所以通常在js代码开头加window.onload或者jQuery的$(document).ready()。问下这个事件的缺点是什么?还有这个事件的替代事件有什么?除了DOMContentLoaded。
闭关修行中......
document.readyState可以用来模拟类似情况,不过没什么必要吧,window.onload很常规的用法,好像还没听说会出什么问题。
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,所以是在内部页面生命周期里控制的)于此对应的可能还会用到一些事件,如 unload 或 pagehide 之类的。
addEventListener
localstorage
unload
pagehide
document.readyState可以用来模拟类似情况,不过没什么必要吧,
window.onload
很常规的用法,好像还没听说会出什么问题。其实这里这个是没问题的,但是假如有你有个插件也这样写,你也这样写:
这里会出现什么问题呢?
很明显,fun1被替换成fun2;所以就会出现,你的代码失效了!
现在很多插件都是要等到文档加载完才执行的,所以很多插件自己内部都会这有类似window.onload的注册方法,那么大家都用window.onload来注册函数那么就会出现部分代码失效问题!
而jquery的ready方法不会出现这个问题,因为它是个函数,函数有个参数是回调函数,每执行一次就会注册一个回调,你的代码写在回调里,这样就不会出现代码失效了,即使大家都用ready这个方法。
楼上有说到
window.onload
互相覆盖的问题,addEventListener
即可。这个事件本身没什么问题,应用场景的话我主要是做一些数据的加载和空闲时间资源的请求,例如从
localstorage
里加载一些东西。(不过细节时间点的控制,由于我做的是 SPA,所以是在内部页面生命周期里控制的)于此对应的可能还会用到一些事件,如
unload
或pagehide
之类的。