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 让图片在 div或dl里 居中,底部对齐
Jan 21 Javascript
javascript 学习之旅 (3)
Feb 05 Javascript
JQuery将文本转化成JSON对象需要注意的问题
May 09 Javascript
解决JS中乘法的浮点错误的方法
Jan 03 Javascript
基于JS实现新闻列表无缝向上滚动实例代码
Jan 22 Javascript
BootStrap和jQuery相结合实现可编辑表格
Apr 21 Javascript
jQuery Easyui datagrid/treegrid 清空数据
Jul 09 Javascript
Bootstrap基本样式学习笔记之按钮(4)
Dec 07 Javascript
canvas知识总结
Jan 25 Javascript
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
Nov 27 Javascript
layui表格 列自动适应大小失效的解决方法
Sep 06 Javascript
基于Vue.js与WordPress Rest API构建单页应用详解
Sep 16 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
PHP5中MVC结构学习
2006/10/09 PHP
php echo 输出字符串函数详解
2010/05/13 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
PHP7 echo和print语句实例用法
2019/02/15 PHP
JavaScript 不只是脚本
2007/05/30 Javascript
一个关于javascript匿名函数的问题分析
2012/03/30 Javascript
js multiple全选与取消全选实现代码
2012/12/04 Javascript
多种方法判断Javascript对象是否存在
2013/09/22 Javascript
刷新页面的几种方法小结(JS,ASP.NET)
2014/01/07 Javascript
获取select元素被选中的文本内容的js代码
2014/01/29 Javascript
捕获和分析JavaScript Error的方法
2014/03/25 Javascript
jQuery实现可编辑的表格实例讲解(2)
2015/09/17 Javascript
JQuery实现Ajax加载图片的方法
2015/12/24 Javascript
jQuery获取checkbox选中的值
2016/01/28 Javascript
Angular 中 select指令用法详解
2016/09/29 Javascript
vue综合组件间的通信详解
2017/11/06 Javascript
微信小程序数字滚动插件使用详解
2018/02/02 Javascript
三分钟学会用ES7中的Async/Await进行异步编程
2018/06/14 Javascript
使用vue2.6实现抖音【时间轮盘】屏保效果附源码
2019/04/24 Javascript
vue配置文件实现代理v2版本的方法
2019/06/21 Javascript
小程序分享链接onShareAppMessage的具体用法
2020/05/22 Javascript
基于JavaScript实现大文件上传后端代码实例
2020/08/18 Javascript
python读取TXT到数组及列表去重后按原来顺序排序的方法
2015/06/26 Python
详解python中asyncio模块
2018/03/03 Python
linux下python中文乱码解决方案详解
2019/08/28 Python
python3图片文件批量重命名处理
2019/10/31 Python
python基于celery实现异步任务周期任务定时任务
2019/12/30 Python
python+openCV对视频进行截取的实现
2020/11/27 Python
Html5之svg可缩放矢量图形_动力节点Java学院整理
2017/07/17 HTML / CSS
小橄榄树:Le Petit Olivier
2018/04/23 全球购物
切尔西足球俱乐部官方网上商店:Chelsea FC
2019/06/17 全球购物
实习单位接收函
2014/01/11 职场文书
自我鉴定怎么写
2014/01/12 职场文书
八年级语文教学反思
2014/02/11 职场文书
关于召开会议的通知
2015/04/15 职场文书
2019学校请假条格式及范文
2019/06/25 职场文书