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


Posted in Javascript onJuly 31, 2018

本文实例讲述了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全局函数使用简单说明
Mar 11 Javascript
JS实现时间格式化的方式汇总
Oct 16 Javascript
js抽奖实现随机抽奖代码效果
Dec 02 Javascript
JS解析XML实例分析
Jan 30 Javascript
纯JavaScript手写图片轮播代码
Oct 20 Javascript
js时间查询插件使用详解
Apr 07 Javascript
基于require.js的使用(实例讲解)
Sep 07 Javascript
微信小程序实现给嵌套template模板传递数据的方式总结
Dec 18 Javascript
js原生方法被覆盖,从新赋值原生的方法
Jan 02 Javascript
vue 自定义指令自动获取文本框焦点的方法
Aug 25 Javascript
JS实现时间校验的代码
May 25 Javascript
关于小程序优化的一些建议(小结)
Dec 10 Javascript
JavaScript+Canvas实现彩色图片转换成黑白图片的方法分析
Jul 31 #Javascript
vue实现word,pdf文件的导出功能
Jul 31 #Javascript
在create-react-app中使用css modules的示例代码
Jul 31 #Javascript
详解使用create-react-app添加css modules、sasss和antd
Jul 31 #Javascript
jQuery实现点击自身以外区域关闭弹出层功能完整示例【改进版】
Jul 31 #jQuery
Vue导出页面为PDF格式的实现思路
Jul 31 #Javascript
详解微信小程序实现WebSocket心跳重连
Jul 31 #Javascript
You might like
PHP 和 HTML
2006/10/09 PHP
PHP ajax 分页类代码
2008/11/13 PHP
PHP 读取和修改大文件的某行内容的代码
2009/10/30 PHP
PHP之数组学习
2011/05/29 PHP
详解php比较操作符的安全问题
2015/12/03 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
php读取本地json文件的实例
2018/03/07 PHP
PHP实现简易计算器功能
2020/08/28 PHP
javascript instanceof 内部机制探析
2010/10/15 Javascript
我的javascript 函数链之演变
2011/04/07 Javascript
左侧是表头的JS表格控件(自写,网上没有的)
2013/06/04 Javascript
js获取html页面节点方法(递归方式)
2013/12/13 Javascript
JS实现网站菜单拖拽移位效果的方法
2015/09/24 Javascript
牛叉的Jquery——Jquery与DOM对象的互相转换及DOM的三种操作
2015/10/29 Javascript
javascript 数组的定义和数组的长度
2016/06/07 Javascript
AngularJs表单校验功能实例代码
2017/02/09 Javascript
微信小程序页面传值实例分析
2017/04/19 Javascript
JavaScript实现简单的树形菜单效果
2017/06/23 Javascript
学习Vue组件实例
2018/04/28 Javascript
vue项目中企业微信使用js-sdk时config和agentConfig配置方式详解
2020/12/15 Vue.js
Python使用MONGODB入门实例
2015/05/11 Python
python实现用户登录系统
2016/05/21 Python
关于Python元祖,列表,字典,集合的比较
2017/01/06 Python
Python操作mysql数据库实现增删查改功能的方法
2018/01/15 Python
python 常见的反爬虫策略
2020/09/27 Python
我的珠宝盒:Ma boîte à bijoux
2019/08/27 全球购物
英国百年闻名的优质健康产品连锁店:Holland & Barrett
2019/12/19 全球购物
外贸采购员岗位职责
2014/03/08 职场文书
社区志愿者培训方案
2014/06/10 职场文书
村级个人对照检查材料
2014/08/22 职场文书
三严三实对照检查材料思想汇报
2014/09/28 职场文书
教师先进事迹材料
2014/12/16 职场文书
出生证明格式
2015/06/15 职场文书
2015年重阳节主持词
2015/07/04 职场文书
2016党校学习心得体会
2016/01/07 职场文书
React forwardRef的使用方法及注意点
2021/06/13 Javascript