javascript - js 自执行函数可否代替onload事件?
PHP中文网
PHP中文网 2017-04-10 14:28:25
0
5
415

初学js,最近碰到一个比较困惑的问题,就是在页面加载后执行的命令是否都需要放进onload事件中?
我用下面这种自执行函数的形式,然后把js文件放到标签的上面一行似乎也可以达成同样的效果。

(function() { //要执行的命令 })();

个人的理解是,onload事件是在页面资源(包括图片、css、Js等)完全加载后才发生的,那是否不涉及操作外部资源的情况下,完全可以用自执行函数来代替onload事件?

PHP中文网
PHP中文网

认证高级PHP讲师

reply all (5)
Ty80

这个应该根据需求而定,完全替代肯定是不可能的。
如果你的需求是页面载入后即执行,那么按题主的方式写个位于底部的自执行函数自然可以达到效果。

但假设我的需求是对页面中一个IMG元素的heightwidth属性进行操作,你的自执行函数就有可能失效了,因为你没法判断图像是否已经完全载入,而如果使用onload方法时,则表示页面内的资源都已经载入,此时执行内部的代码操作图像元素的宽高一定是没有问题的。

即使是jQuery封装的$(document).ready()方法也不能说取代onload方法,简单的立即执行函数又怎么可能做到呢?:)

    Ty80

    看了上面的答案,还是没明白,题主需要弄清楚一个概念:

    JS具有阻塞特性,当浏览器在执行js代码时,不能同时做其它事情,即