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 相关文章推荐
广告代码静态化js通用函数
May 09 Javascript
JS获得选取checkbox整行数据的方法
Jan 28 Javascript
谈谈对JavaScript原生拖放的深入理解
Sep 20 Javascript
JavaScript中this的四个绑定规则总结
Sep 26 Javascript
JQuery PHP图片在线裁剪实例
Jul 27 Javascript
从0开始学Vue
Oct 27 Javascript
bootstrap datetimepicker实现秒钟选择下拉框
Jan 05 Javascript
js实现canvas图片与img图片的相互转换的示例
Aug 31 Javascript
Vue循环组件加validate多表单验证的实例
Sep 18 Javascript
详解如何使用nvm管理Node.js多版本
May 06 Javascript
vue 获取视频时长的实例代码
Aug 20 Javascript
js实现无缝轮播图效果
Mar 09 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中将指针移动到数据集初始位置的实现代码[mysql_data_seek]
2012/11/01 PHP
利用php下载xls文件(自己动手写的)
2014/04/18 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
PHP使用文件锁解决高并发问题示例
2018/03/29 PHP
JSON 教程 json入门学习笔记
2020/09/22 Javascript
对比分析AngularJS中的$http.post与jQuery.post的区别
2015/02/27 Javascript
jQuery ajax全局函数处理session过期后的ajax跳转问题
2016/06/03 Javascript
浅谈window.onbeforeunload() 事件调用ajax
2016/06/29 Javascript
漂亮! js实现颜色渐变效果
2016/08/12 Javascript
js获取指定字符前/后的字符串简单实例
2016/10/27 Javascript
Angular ng-repeat遍历渲染完页面后执行其他操作详细介绍
2016/12/13 Javascript
Bootstrap弹出框(Popover)被挤压的问题小结
2017/07/11 Javascript
React根据宽度自适应高度的示例代码
2017/10/11 Javascript
js实现会跳动的日历效果(完整实例)
2017/10/18 Javascript
详解Vuex管理登录状态
2017/11/13 Javascript
Angular ng-animate和ng-cookies用法详解
2018/04/18 Javascript
详解nodejs 配置文件处理方案
2019/01/02 NodeJs
Vue3.0 响应式系统源码逐行分析讲解
2019/10/14 Javascript
vue 项目中当访问路由不存在的时候默认访问404页面操作
2020/08/31 Javascript
详解JavaScript执行模型
2020/11/16 Javascript
使用Python中的greenlet包实现并发编程的入门教程
2015/04/16 Python
Python批量修改文本文件内容的方法
2016/04/29 Python
Python3多线程爬虫实例讲解代码
2018/01/05 Python
python实现文本界面网络聊天室
2018/12/12 Python
用python对excel进行操作(读,写,修改)
2020/12/25 Python
Python3压缩和解压缩实现代码
2021/03/01 Python
劳资专员岗位职责
2013/12/27 职场文书
马智宇结婚主持词
2014/04/01 职场文书
税务干部群众路线教育实践活动自我剖析材料
2014/09/21 职场文书
四年级数学上册教学计划
2015/01/20 职场文书
小学国庆节活动总结
2015/03/23 职场文书
2015年妇产科工作总结
2015/05/18 职场文书
2015年学校政教工作总结
2015/07/20 职场文书
《敬重卑微》读后感3篇
2019/11/26 职场文书
草系十大最强宝可梦,纸片人上榜,榜首大家最熟悉
2022/03/18 日漫
排查Tomcat进程假死的问题
2022/05/06 Servers