在stackoverflow上看到一个问题,大致是说在一个页面有多张图片,那么该怎么样来判断所有图片都已加载完成呢?提问者使用的是jquery.
<img src='xxx.xxx' /> <img src='xxx.xxx' /> <script> $('img').load(function(){ alert('img loaded') }) </script>
比如上面的代码,每张图片加载完后,都会弹出 img loaded,有几张图片加载完,就会弹出几次,而提问者想要的结果是等所有的图片加载完成后才弹出 img loaded,也就是说img loaded 只会弹出一次。看了下前面两位跟帖者的回答,但提问者都说 it doesn’t work,并且他们的方法貌似还有点小复杂。
我的想法是这样的,先得出图片的数量,然后在每一张图片加载完后的事件中把先前得出的图片数量减1,再判断最后的结果是不是0,如果是0则意味着所有图片都加载完了
代码如下:
<!DOCTYPE html> <html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> <title>all images are loaded</title> </head> <body> <img src="http://res.news.ifeng.com/ba823efb4496b7e7/2011/0707/rdn_4e1520b166d25.jpg" /> <br/> <img src="http://res.news.ifeng.com/ba823efb4496b7e7/2011/0706/rdn_4e13a50de3d0e.jpg" /> <br/> <img src="http://res.news.ifeng.com/ba823efb4496b7e7/2011/0706/rdn_4e13a51221e9a.jpg" /> <br/> <img src="http://res.news.ifeng.com/ba823efb4496b7e7/2011/0706/rdn_4e13a7d6ee1a2.jpg" /> <br/> <img src="http://res.news.ifeng.com/ba823efb4496b7e7/2011/0706/rdn_4e13a51151c7f.jpg" /> <br/> <img src="http://res.news.ifeng.com/ba823efb4496b7e7/2011/0706/rdn_4e13a514a9de9.jpg" /> <br/> <img src="http://res.news.ifeng.com/ba823efb4496b7e7/2011/0706/rdn_4e13a511aec95.jpg" /> <script> var imgNum=$('img').length; $('img').load(function(){ if(!--imgNum){alert('All images loaded')} }) </script> </body> </html>