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 相关文章推荐
在Z-Blog中运行代码[html][/html](纯JS版)
Mar 25 Javascript
Javascript 函数中的参数使用分析
Mar 27 Javascript
jquery 3D球状导航的文章分类
Jul 06 Javascript
页面图片浮动左右滑动效果的简单实现案例
Feb 10 Javascript
JQuery中操作Css样式的方法
Feb 12 Javascript
jQuery中change事件用法实例
Dec 26 Javascript
js原生之焦点图转换加定时器实例
Dec 12 Javascript
浅谈js函数三种定义方式 &amp; 四种调用方式 &amp; 调用顺序
Feb 19 Javascript
jQuery Pagination分页插件使用方法详解
Feb 28 Javascript
浅谈原型对象的常用开发模式
Jul 22 Javascript
js 动态校验开始结束时间的实现代码
May 25 Javascript
详解Vite的新体验
Feb 22 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 获取文件权限函数介绍
2013/07/11 PHP
phpnow php探针环境检测代码
2014/11/04 PHP
PHP学习笔记(二):变量详解
2015/04/17 PHP
yii2的restful api路由实例详解
2019/05/14 PHP
Z-Blog中用到的js代码
2007/03/15 Javascript
Jquery选择器 $实现原理
2009/12/02 Javascript
jquery实现按Enter键触发事件示例
2013/09/10 Javascript
js document.write()使用介绍
2014/02/21 Javascript
jquery图形密码实现方法
2015/03/11 Javascript
简述AngularJS相关的一些编程思想
2015/06/23 Javascript
Bootstrap每天必学之前端开发框架
2015/11/19 Javascript
javascript实现计时器的简单方法
2016/02/21 Javascript
JavaScript入门系列之知识点总结
2016/03/24 Javascript
web前端开发upload上传头像js示例代码
2016/10/22 Javascript
Angularjs使用指令做表单校验的方法
2017/03/31 Javascript
JS操作时间 - UNIX时间戳的简单介绍(必看篇)
2017/08/16 Javascript
vue中eventbus被多次触发以及踩过的坑
2017/12/02 Javascript
js读取本地文件的实例
2017/12/22 Javascript
vue 实现在函数中触发路由跳转的示例
2018/09/01 Javascript
深入理解vue中的slot与slot-scope
2019/04/22 Javascript
vue实现在线翻译功能
2019/09/27 Javascript
微信小程序获取复选框全选反选选中的值(实例代码)
2019/12/17 Javascript
Python中用于返回绝对值的abs()方法
2015/05/14 Python
python训练数据时打乱训练数据与标签的两种方法小结
2018/11/08 Python
pytorch 实现cross entropy损失函数计算方式
2020/01/02 Python
tensorflow入门:tfrecord 和tf.data.TFRecordDataset的使用
2020/01/20 Python
keras 使用Lambda 快速新建层 添加多个参数操作
2020/06/10 Python
Django创建一个后台的基本步骤记录
2020/10/02 Python
迟到检讨书900字
2014/01/14 职场文书
安全责任书范文
2014/08/25 职场文书
关于对大人不礼貌的检讨书
2014/09/29 职场文书
学校党员干部承诺书
2015/05/04 职场文书
出生证明范本
2015/06/15 职场文书
2015教师个人德育工作总结
2015/07/22 职场文书
《追风筝的人》:人心中的成见是座大山,但请不忘初心
2019/11/15 职场文书
浅谈MySQL next-key lock 加锁范围
2021/06/07 MySQL