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 相关文章推荐
发两个小东西,ASP/PHP 学习工具。 用JavaScript写的
Apr 12 Javascript
html a标签-超链接中confirm方法使用介绍
Jan 04 Javascript
使用js正则控制input标签只允许输入的值
Jul 29 Javascript
jQuery处理XML文件的几种方法
Jun 14 Javascript
微信小程序之圆形进度条实现思路
Feb 22 Javascript
vue中设置height:100%无效的问题及解决方法
Jul 27 Javascript
解决Vue axios post请求,后台获取不到数据的问题方法
Aug 11 Javascript
详解小程序用户登录状态检查与更新实例
May 15 Javascript
JS中自定义事件的使用与触发操作实例分析
Nov 01 Javascript
JS数组方法reduce的用法实例分析
Mar 03 Javascript
jQuery实现鼠标放置名字上显示详细内容气泡提示框效果的方法分析
Apr 04 jQuery
VueJS实现用户管理系统
May 29 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版微信公众平台入门教程之开发者认证的方法
2016/09/26 PHP
微信公众平台开发(五) 天气预报功能开发
2016/12/03 PHP
phpstudy默认不支持64位php的解决方法
2017/02/20 PHP
浅谈PHP错误类型及屏蔽方法
2017/05/27 PHP
基于php编程规范(详解)
2017/08/17 PHP
php+js实现的无刷新下载文件功能示例
2019/08/23 PHP
Javascript &amp; DHTML 实例编程(教程)基础知识
2007/06/02 Javascript
点击页面其它地方隐藏该div的两种思路
2013/11/18 Javascript
angular.element方法汇总
2015/01/07 Javascript
jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)
2016/05/27 Javascript
JS中位置与大小的获取方法
2016/11/22 Javascript
将angular.js项目整合到.net mvc中的方法详解
2017/06/29 Javascript
微信小程序开发animation心跳动画效果
2017/08/16 Javascript
JavaScript设计模式之构造函数模式实例教程
2018/07/02 Javascript
微信小程序CSS3动画下拉菜单效果
2018/11/04 Javascript
jQuery实现简易聊天框
2020/02/08 jQuery
JS call()及apply()方法使用实例汇总
2020/07/11 Javascript
vue前端和Django后端如何查询一定时间段内的数据
2021/02/28 Vue.js
[00:29]2019完美世界全国高校联赛(秋季赛)总决赛海口落幕
2019/12/10 DOTA
Python中利用sorted()函数排序的简单教程
2015/04/27 Python
python实现textrank关键词提取
2018/06/22 Python
pandas DataFrame 交集并集补集的实现
2019/06/24 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
2019/07/06 Python
python 实现让字典的value 成为列表
2019/12/16 Python
如何给Python代码进行加密
2020/01/10 Python
Python关键字及可变参数*args,**kw原理解析
2020/04/04 Python
PythonPC客户端自动化实现原理(pywinauto)
2020/05/28 Python
python 多线程爬取壁纸网站的示例
2021/02/20 Python
AmazeUI 缩略图的实现示例
2020/08/18 HTML / CSS
Chemist Warehouse官方海外旗舰店:澳洲第一连锁大药房
2017/08/25 全球购物
女装和独特珠宝:Sundance Catalog
2018/09/19 全球购物
乐高官方旗舰店:LEGO积木玩具
2019/04/06 全球购物
重大事项社会稳定风险评估方案
2014/06/15 职场文书
呼啸山庄读书笔记
2015/06/29 职场文书
职工食堂管理制度
2015/08/06 职场文书
详解PHP Swoole与TCP三次握手
2021/05/27 PHP