84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
初学js,最近碰到一个比较困惑的问题,就是在页面加载后执行的命令是否都需要放进onload事件中?我用下面这种自执行函数的形式,然后把js文件放到标签的上面一行似乎也可以达成同样的效果。
(function() { //要执行的命令 })();
个人的理解是,onload事件是在页面资源(包括图片、css、Js等)完全加载后才发生的,那是否不涉及操作外部资源的情况下,完全可以用自执行函数来代替onload事件?
认证高级PHP讲师
这个应该根据需求而定,完全替代肯定是不可能的。如果你的需求是页面载入后即执行,那么按题主的方式写个位于底部的自执行函数自然可以达到效果。
但假设我的需求是对页面中一个IMG元素的height和width属性进行操作,你的自执行函数就有可能失效了,因为你没法判断图像是否已经完全载入,而如果使用onload方法时,则表示页面内的资源都已经载入,此时执行内部的代码操作图像元素的宽高一定是没有问题的。
IMG
height
width
onload
即使是jQuery封装的$(document).ready()方法也不能说取代onload方法,简单的立即执行函数又怎么可能做到呢?:)
jQuery
$(document).ready()
看了上面的答案,还是没明白,题主需要弄清楚一个概念:
JS具有阻塞特性,当浏览器在执行js代码时,不能同时做其它事情,即
这个应该根据需求而定,完全替代肯定是不可能的。
如果你的需求是页面载入后即执行,那么按题主的方式写个位于底部的自执行函数自然可以达到效果。
但假设我的需求是对页面中一个
IMG
元素的height
和width
属性进行操作,你的自执行函数就有可能失效了,因为你没法判断图像是否已经完全载入,而如果使用onload
方法时,则表示页面内的资源都已经载入,此时执行内部的代码操作图像元素的宽高一定是没有问题的。即使是
jQuery
封装的$(document).ready()
方法也不能说取代onload
方法,简单的立即执行函数又怎么可能做到呢?:)看了上面的答案,还是没明白,题主需要弄清楚一个概念: