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 实现无干扰阴影效果 简单好用(附文件下载)
Dec 27 Javascript
jquery的$(document).ready()和onload的加载顺序
May 26 Javascript
javascript算法学习(直接插入排序)
Apr 12 Javascript
我用的一些Node.js开发工具、开发包、框架等总结
Sep 25 Javascript
JS实现很酷的EMAIL地址添加功能实例
Feb 28 Javascript
jQuery中closest和parents的区别分析
May 07 Javascript
Angular实现form自动布局
Jan 28 Javascript
jQuery页面加载初始化的3种方法(推荐)
Jun 02 Javascript
详解基于Node.js的微信JS-SDK后端接口实现代码
Jul 15 Javascript
CSS3结合jQuery实现动画效果及回调函数的实例
Dec 27 jQuery
重新认识vue之事件阻止冒泡的实现
Aug 02 Javascript
VUE2.0 ElementUI2.0表格el-table自适应高度的实现方法
Nov 28 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
10个实用的PHP代码片段
2011/09/02 PHP
php数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
2011/10/31 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
2017/04/01 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
几行代码轻松搞定jquery实现flash8类似的连接效果
2007/05/03 Javascript
jquery 使用点滴函数代码
2011/05/20 Javascript
javaScript 利用闭包模拟对象的私有属性
2011/12/29 Javascript
HTML5使用DeviceOrientation实现摇一摇功能
2015/06/05 Javascript
jQuery新窗口打开外链接
2016/07/21 Javascript
Sortable.js拖拽排序使用方法解析
2016/11/04 Javascript
通过jsonp获取json数据实现AJAX跨域请求
2017/01/22 Javascript
JS实现元素上下左右移动效果
2017/10/18 Javascript
微信小程序实现简单input正则表达式验证功能示例
2017/11/30 Javascript
分享一下Python 开发者节省时间的10个方法
2015/10/02 Python
python-pyinstaller、打包后获取路径的实例
2019/06/10 Python
Python+threading模块对单个接口进行并发测试
2019/06/25 Python
Python代码块及缓存机制原理详解
2019/12/13 Python
Python+Kepler.gl轻松制作酷炫路径动画的实现示例
2020/06/02 Python
python中线程和进程有何区别
2020/06/17 Python
Python函数的迭代器与生成器的示例代码
2020/06/18 Python
django 获取字段最大值,最新的记录操作
2020/08/09 Python
有关HTML5中背景音乐的自动播放功能
2017/10/16 HTML / CSS
英国天然保健品网站:Simply Supplements
2017/03/22 全球购物
美国家居装饰购物网站:Amanda Lindroth
2020/03/25 全球购物
秘书岗位职责
2013/11/18 职场文书
公司面试感谢信
2014/02/01 职场文书
档案室主任岗位职责
2014/02/12 职场文书
投标诚信承诺书
2014/05/26 职场文书
行政专员岗位职责说明书
2014/09/01 职场文书
乡镇干部个人对照检查材料思想汇报(原创篇)
2014/09/28 职场文书
建筑工地资料员岗位职责
2015/04/13 职场文书
校园之声广播稿
2015/08/18 职场文书
七年级生物教学反思
2016/02/20 职场文书
Python办公自动化之教你如何用Python将任意文件转为PDF格式
2021/06/28 Python
如何利用Python实现一个论文降重工具
2021/07/09 Python
SQL语句中JOIN的用法场景分析
2021/07/25 SQL Server