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验证模型自我实现的具体方法
Jun 21 Javascript
鼠标移动到图片名上,显示图片的简单实例
Jul 14 Javascript
javascript中的document.open()方法使用介绍
Oct 09 Javascript
在JavaScript里防止事件函数高频触发和高频调用的方法
Sep 06 Javascript
jquery使用ul模拟select实现表单美化的方法
Aug 18 Javascript
jQuery遍历DOM的父级元素、子级元素和同级元素的方法总结
Jul 07 Javascript
如何使用JS在HTML中自定义字符串格式化
Jul 20 Javascript
JavaScript你不知道的一些数组方法
Aug 18 Javascript
微信小程序tabBar用法实例详解
Dec 04 Javascript
JS 中document.write()的用法和清空的原因浅析
Dec 04 Javascript
记一次用ts+vuecli4重构项目的实现
May 21 Javascript
JavaScript实现与web通信的方法详解
Aug 07 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
基于数据库的在线人数,日访问量等统计
2006/10/09 PHP
PR值查询 | PageRank 查询
2006/12/20 PHP
使用dump函数,给php加断点测试
2013/06/25 PHP
PHP 7的一些引人注目的新特性简单介绍
2015/11/08 PHP
php版微信自动登录并获取昵称的方法
2016/09/23 PHP
IE JS无提示关闭窗口不提示的方法
2010/04/29 Javascript
javascript去掉前后空格的实例
2013/11/07 Javascript
详解jQuery插件开发中的extend方法
2013/11/19 Javascript
制作jquery遮罩层效果导航菜单代码分享
2013/12/25 Javascript
浅析Bootstrap缩略图组件与警示框组件
2016/04/29 Javascript
JQuery在循环中绑定事件的问题详解
2016/06/02 Javascript
JS实现六位字符密码输入器功能
2016/08/19 Javascript
js实现文字无缝向上滚动
2017/02/16 Javascript
基于bootstrap实现bootstrap中文网巨幕效果
2017/05/02 Javascript
浅谈angular.copy() 深拷贝
2017/09/14 Javascript
JS中touchstart事件与click事件冲突的解决方法
2018/03/12 Javascript
axios post提交formdata的实例
2018/03/16 Javascript
对Vue table 动态表格td可编辑的方法详解
2018/08/28 Javascript
[01:08:43]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第一场 1月9日
2021/03/11 DOTA
使用Python的Tornado框架实现一个一对一聊天的程序
2015/04/25 Python
python类的继承实例详解
2017/03/30 Python
python 获取字符串MD5值方法
2018/05/29 Python
PyCharm搭建Spark开发环境实现第一个pyspark程序
2019/06/13 Python
python3 pathlib库Path类方法总结
2019/12/26 Python
Pytorch自己加载单通道图片用作数据集训练的实例
2020/01/18 Python
使用Python三角函数公式计算三角形的夹角案例
2020/04/15 Python
Python爬虫小例子——爬取51job发布的工作职位
2020/07/10 Python
css3图片边框border-image的用法
2017/06/30 HTML / CSS
html5定位并在百度地图上显示的示例
2014/04/27 HTML / CSS
日本非常有名的内衣丝袜品牌:GUNZE
2017/01/06 全球购物
Java面试题:说出如下代码的执行结果
2015/10/30 面试题
公司门卫管理制度
2014/02/01 职场文书
公司授权委托书范文
2014/08/02 职场文书
银行业务授权委托书
2014/10/10 职场文书
教师个人考察材料
2014/12/16 职场文书
详解Python flask的前后端交互
2022/03/31 Python