为了账号安全,请及时绑定邮箱和手机立即绑定

为什么new Image()后,没有用src赋值?也可以预加载?

为什么new Image()后,没有用src赋值?也可以预加载?

正在回答

5 回答

我也是,建议用手机的离线功能,先都离线下来,然后随便看.

0 回复 有任何疑惑可以回复我~

放一张高程的正确解释

http://img1.sycdn.imooc.com//5da6db630001ab3906680617.jpg

0 回复 有任何疑惑可以回复我~

这个原因我查过,那就是防止有的图片已经缓存过了,防止onload的事件的function还没传给onload时,就已经加载完了,导致onload事件根本没发生。这是比较好理解的,还有说图片是什么异步的js是同步的。

0 回复 有任何疑惑可以回复我~

当imgsObj.src = 图片路径的时候,已经就是在实现图片缓存功能了

0 回复 有任何疑惑可以回复我~

new Image()之后,先绑定load和error的事件,然后赋值src,才会触发之前绑定的事件,所以事件绑定要在前面,仅供参考

0 回复 有任何疑惑可以回复我~
#1

jylrc 提问者

放前面效果不是一样的吗?
2017-07-19 回复 有任何疑惑可以回复我~
#2

ffg_疯疯过 回复 jylrc 提问者

js内部是按顺序逐行执行的,可以认为是同步的 给imgae赋值src时,去加载图片这个过程是异步的,这个异步过程完成后,如果有onload,则执行onload 如果先赋值src,那么这个异步过程可能在你赋值onload之前就完成了(比如图片缓存,或者是js由于某些原因被阻塞了),那么onload就不会执行 反之,js同步执行确定onload赋值完成后才会赋值src,可以保证这个异步过程在onload赋值完成后才开始进行,也就保证了onload一定会被执行到 ----------**以上摘自网上答案**-------- 还有一个问题据说在IE上如果src写在前面会报错
2017-10-11 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么new Image()后,没有用src赋值?也可以预加载?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信