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与CSS写在同一个文件里的书写方法
Jun 02 Javascript
8个超棒的学习 jQuery 的网站 推荐收藏
Apr 02 Javascript
jquery实现的让超出显示范围外的导航自动固定屏幕最顶上
Sep 22 Javascript
Jquery跨域获得Json的简单实例
May 18 Javascript
javascript如何创建对象
Aug 29 Javascript
Angular 1.x个人使用的经验小结
Jul 19 Javascript
js 判断一个数字是不是2的n次方幂的实例
Nov 26 Javascript
webpack构建换肤功能的思路详解
Nov 27 Javascript
jQuery 实现批量提交表格多行数据的方法
Aug 09 jQuery
基于elementUI实现图片预览组件的示例代码
Mar 31 Javascript
jQuery鼠标滑过横向时间轴样式(代码详解)
Nov 01 jQuery
element日历calendar组件上月、今天、下月、日历块点击事件及模板源码
Jul 27 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实现框架(二)
2006/10/09 PHP
PHP zlib扩展实现页面GZIP压缩输出
2010/06/17 PHP
php简单解析mysqli查询结果的方法(2种方法)
2016/06/29 PHP
屏蔽网页右键复制和ctrl+c复制的js代码
2013/01/04 Javascript
append和appendTo的区别以及appendChild用法
2013/12/24 Javascript
node.js中的fs.futimes方法使用说明
2014/12/17 Javascript
JavaScript中模拟实现jsonp
2015/06/19 Javascript
跟我学习javascript的函数调用和构造函数调用
2015/11/16 Javascript
JavaScript常用代码书写规范的超全面总结
2016/09/11 Javascript
详解基于webpack搭建react运行环境
2017/06/01 Javascript
详解vue中computed 和 watch的异同
2017/06/30 Javascript
Vue导出json数据到Excel电子表格的示例
2017/12/04 Javascript
Angular6中使用Swiper的方法示例
2018/07/09 Javascript
在element-ui的select下拉框加上滚动加载
2019/04/18 Javascript
javascript定时器的简单应用示例【控制方块移动】
2019/06/17 Javascript
更强大的vue ssr实现预取数据的方式
2019/07/19 Javascript
[01:14]DOTA2亚洲邀请赛 ShowOpen
2015/02/07 DOTA
python中os模块详解
2016/10/14 Python
深入理解NumPy简明教程---数组3(组合)
2016/12/17 Python
Python基于递归实现电话号码映射功能示例
2018/04/13 Python
Python字典生成式、集合生成式、生成器用法实例分析
2020/01/07 Python
Python sklearn库实现PCA教程(以鸢尾花分类为例)
2020/02/24 Python
keras多显卡训练方式
2020/06/10 Python
pycharm导入源码的具体步骤
2020/08/04 Python
浅析Python 字符编码与文件处理
2020/09/24 Python
机电工程学生自荐信范文
2013/12/07 职场文书
学前教育学生自荐信范文
2013/12/31 职场文书
20岁生日感言
2014/01/13 职场文书
八年级语文教学反思
2014/02/11 职场文书
企业厂务公开实施方案
2014/03/26 职场文书
企业文化标语口号
2014/06/09 职场文书
房地产端午节活动方案
2014/08/24 职场文书
六查六看自检自查剖析材料
2014/10/14 职场文书
2014年终个人工作总结
2014/11/07 职场文书
教师廉洁自律个人总结
2015/02/10 职场文书
新学期小学班主任工作计划
2019/06/21 职场文书