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 13 Javascript
javascript 表格内容排序 简单操作示例代码
Jan 03 Javascript
jQuery图片切换插件jquery.cycle.js使用示例
Jun 16 Javascript
js实现简单随机抽奖的方法
Jan 27 Javascript
浅谈jQuery的offset()方法及示例分享
Jul 17 Javascript
JavaScript中Number对象的toFixed() 方法详解
Sep 02 Javascript
jQuery中fadein与fadeout方法用法示例
Sep 16 Javascript
JS前端加密算法示例
Dec 22 Javascript
vuejs2.0子组件改变父组件的数据实例
May 10 Javascript
vuejs使用$emit和$on进行组件之间的传值的示例
Oct 04 Javascript
React学习之JSX与react事件实例分析
Jan 06 Javascript
vue项目接口域名动态获取操作
Aug 13 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结合飞信 免费天气预报短信
2009/05/07 PHP
PHP中simplexml_load_string函数使用说明
2011/01/01 PHP
PHP 遍历文件实现代码
2011/05/04 PHP
PHP实现对二维数组某个键排序的方法
2016/09/14 PHP
PHPCMS V9 添加二级导航的思路详解
2016/10/20 PHP
一款JavaScript压缩工具:X2JSCompactor
2007/06/13 Javascript
javascript 学习笔记(八)javascript对象
2011/04/12 Javascript
Javascript中的String对象详谈
2014/03/03 Javascript
JavaScript结合AJAX_stream实现流式显示
2015/01/08 Javascript
js实现字符串转日期格式的方法
2015/05/20 Javascript
谈谈AngularJs中的隐藏和显示
2015/12/09 Javascript
JS函数定义方式的区别介绍
2016/03/22 Javascript
js实现浏览器倒计时跳转页面效果
2016/08/12 Javascript
jQuery使用方法
2017/02/04 Javascript
Node.js连接MongoDB数据库产生的问题
2017/02/08 Javascript
vue 实现 ios 原生picker 效果及实现思路解析
2017/12/06 Javascript
详解webpack4升级指南以及从webpack3.x迁移
2018/06/12 Javascript
详解JavaScript修改注册表的方法
2020/01/05 Javascript
[00:32]2018DOTA2亚洲邀请赛Liquid出场
2018/04/03 DOTA
python 字典(dict)按键和值排序
2016/06/28 Python
Python Flask框架模板操作实例分析
2019/05/03 Python
PyQt5通信机制 信号与槽详解
2019/08/07 Python
python 利用turtle库绘制笑脸和哭脸的例子
2019/11/23 Python
python内置模块collections知识点总结
2019/12/19 Python
Python常用数据分析模块原理解析
2020/07/20 Python
python判断变量是否为列表的方法
2020/09/17 Python
宝拉珍选澳大利亚官方购物网站:Paula’s Choice澳大利亚
2016/09/13 全球购物
Lookfantastic意大利官网:英国知名美妆购物网站
2019/05/31 全球购物
美国名牌手表折扣网站:Jomashop
2020/05/22 全球购物
内刊编辑求职自荐书范文
2014/02/19 职场文书
公司承诺书范文
2014/05/19 职场文书
开展党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
租车协议书范本2014
2014/11/17 职场文书
刑事辩护词范文
2015/05/21 职场文书
法制主题班会教案
2015/08/13 职场文书
win10识别不了U盘怎么办 win10系统读取U盘失败的解决办法
2022/08/05 数码科技