JavaScript判断图片是否加载完成的三种方式

有时需要获取图片的尺寸,这需要在图片加载完成以后才可以。有三种方式实现,下面一一介绍。

一、load事件

Html代码   收藏代码
  1. <!DOCTYPE HTML>  
  2. <html>  
  3. <head>  
  4.     <meta charset="utf-8">  
  5.     <title>img - load event</title>  
  6. </head>  
  7. <body>  
  8.     <img id="img1" src="http://pic1.win4000.com/wallpaper/f/51c3bb99a21ea.jpg">  
  9.     <p id="p1">loading...</p>  
  10.     <script type="text/javascript">  
  11.         img1.onload = function() {  
  12.             p1.innerHTML = 'loaded'  
  13.         }  
  14.     </script>  
  15. </body>  
  16. </html>  

测试,所有浏览器都显示出了“loaded”,说明所有浏览器都支持img的load事件。

二、readystatechange事件

Html代码   收藏代码
  1. <!DOCTYPE HTML>  
  2. <html>  
  3. <head>  
  4.     <meta charset="utf-8">  
  5.     <title>img - readystatechange event</title>  
  6. </head>  
  7. <body>  
  8.     <img id="img1" src="http://pic1.win4000.com/wallpaper/f/51c3bb99a21ea.jpg">  
  9.     <p id="p1">loading...</p>  
  10.     <script type="text/javascript">  
  11.         img1.onreadystatechange = function() {  
  12.             if(img1.readyState=="complete"||img1.readyState=="loaded"){  
  13.                 p1.innerHTML = 'readystatechange:loaded'  
  14.             }  
  15.         }  
  16.     </script>  
  17. </body>  
  18. </html>  

readyState为complete和loaded则表明图片已经加载完毕。测试IE6-IE10支持该事件,其它浏览器不支持。

三、img的complete属性

Html代码   收藏代码
  1. <!DOCTYPE HTML>  
  2. <html>  
  3. <head>  
  4.     <meta charset="utf-8">  
  5.     <title>img - complete attribute</title>  
  6. </head>  
  7. <body>  
  8.     <img id="img1" src="http://pic1.win4000.com/wallpaper/f/51c3bb99a21ea.jpg">  
  9.     <p id="p1">loading...</p>  
  10.     <script type="text/javascript">  
  11.         function imgLoad(img, callback) {  
  12.             var timer = setInterval(function() {  
  13.                 if (img.complete) {  
  14.                     callback(img)  
  15.                     clearInterval(timer)  
  16.                 }  
  17.             }, 50)  
  18.         }  
  19.         imgLoad(img1, function() {  
  20.             p1.innerHTML('加载完毕')  
  21.         })  
  22.     </script>  
  23. </body>  
  24. </html>  

轮询不断监测img的complete属性,如果为true则表明图片已经加载完毕,停止轮询。该属性所有浏览器都支持。



 

猜你喜欢

转载自himo-zhang.iteye.com/blog/2292697