欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-08-10 23:52:07
本文实例讲述了js实现判断图片是否加载完成的方法。分享给大家供大家参考,具体如下: 1、onload事件 <...

本文实例讲述了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图片操作技巧大全》、《javascript运动效果与技巧汇总》、《javascript切换特效与技巧总结》、《javascript错误与调试技巧总结》、《javascript数据结构与算法技巧总结》、《javascript遍历算法与技巧总结》及《javascript数学运算用法总结

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