在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>