首页 > 开发 > JS > 正文

JS实现判断图片是否加载完成的方法分析

2024-05-06 16:45:28
字体:
来源:转载
供稿:网友

本文实例讲述了JS实现判断图片是否加载完成的方法。分享给大家供大家参考,具体如下:

1、onload事件

<!DOCTYPE HTML><html>  <head>    <title></title>  </head>  <body>    <img src="images/background.png">    <p>loading...</p>    <script type="text/javascript">      document.getElementsByTagName("img")[0].onload =function() {        document.getElementsByTagName("p")[0].innerHTML ='加载完成!';      }    </script>  </body></html>

2、complete属性

<!DOCTYPE HTML><html>  <head>    <title></title>  </head>  <body>    <img src="images/background.png">    <p>loading...</p>    <script type="text/javascript">      function imgLoad(img, callback) {        var timer = setInterval(function() {          if (img.complete) {            callback(img);            clearInterval(timer);          }        }, 50);      }      imgLoad(document.getElementsByTagName("img")[0], function() {        document.getElementsByTagName("p")[0].innerHTML = '加载完成!';      })    </script>  </body></html>

3、onreadystatechange事件

<!DOCTYPE HTML><html>  <head>    <title></title>  </head>  <body>    <img src="images/background.png">    <p>loading...</p>    <script type="text/javascript">      document.getElementsByTagName("img")[0].onreadystatechange = function() {        if (this.readyState=="complete" || this.readyState=="loaded")          document.getElementsByTagName("p")[0].innerHTML = '加载完成';      }    </script>  </body></html>

注意:只有IE6-IE10支持onreadystatechange事件,其它浏览器不支持。

4、onerror事件

网络状况不好或图片不存在都可能触发onerror事件。

<!DOCTYPE HTML><html>  <head>    <title></title>  </head>  <body>    <img src="images/notExistImg.png">    <p>loading...</p>    <script type="text/javascript">      document.getElementsByTagName("img")[0].onload =function() {        document.getElementsByTagName("p")[0].innerHTML ='加载完成!';      }      document.getElementsByTagName("img")[0].onerror =function() {        document.getElementsByTagName("img")[0].src = "images/background.png";      }    </script>  </body></html>

触发onerror事件后,会为img指定一个新的图片。

问题:

新图片存在则显示新图片,但若新图片也不存在,则将继续触发onerror,导致页面循环跳动。

解决:

通过将onerror置为null,来防止页面循环跳动。

<!DOCTYPE HTML><html>  <head>    <title></title>  </head>  <body>    <img src="images/notExistImg.png">    <p>loading...</p>    <script type="text/javascript">      document.getElementsByTagName("img")[0].onload =function() {        document.getElementsByTagName("p")[0].innerHTML ='加载完成!';      }      document.getElementsByTagName("img")[0].onerror =function() {        document.getElementsByTagName("img")[0].src = "images/backgeound.png";        document.getElementsByTagName("img")[0].onerror = null;        document.getElementsByTagName("p")[0].innerHTML ='加载失败!';      }    </script>  </body></html>

希望本文所述对大家JavaScript程序设计有所帮助。


注:相关教程知识阅读请移步到JavaScript/Ajax教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表