JS实现的自定义显示加载等待图片插件(loading.gif)


Posted in Javascript onJune 17, 2016

本文实例讲述了JS实现的自定义显示加载等待图片插件。分享给大家供大家参考,具体如下:

在工作中遇到了一个问题 —— 某个业务流程分为几个阶段,每个阶段如果在数据没有显示出来之前就要显示加载图片loading.gif文件,如果有数据了就消失。为此,自己写了一个方法,方便整个工程使用。

<button onclick="show()">show</button>
<button onclick="hide()">hide</button>
<script>
//创建加载对象
var obj = new loadingImg();
//显示加载图片
function show(){
  obj.show();
}
//隐藏加载图片
function hide(){
  obj.hide();
}
//加载图片方法(对象)
function loadingImg(mySetting){
  var that = this;
  if(mySetting == "" || mySetting == undefined || typeof mySetting != "object"){
    mySetting = {};
  }
  //使用时间戳作为空间的ID
  var targetID = new Date().getTime();
  this.setting = {
    //插入图片的容器,使用jquery的查询方式传入参数
    targetConater : "",
    //使用图片的地址
    imgUrl : "../img/loading.gif",
    //图片显示的 宽度
    imgWidth : "32px",
    //图片的默认样式
    imgClass : "",
    //生成控件的ID
    "targetID" : targetID,
    //显示之前的回调函数
    beforeShow : function(plugin){
    },
    //显示之后的回调函数
    afterShow : function(plugin,targetID){
    }
  }
  this.setting = $.extend(this.setting, mySetting);
  //获取屏幕的宽度
  this.getScreenWidth = function(){
    return document.documentElement.clientWidth;
  }
  //获取屏幕的高度
  this.getScreenHeight = function (){
    return document.documentElement.clientHeight;
  }
  //显示控件
  this.show = function(){
    $("#" + that.setting.targetID).show();
  }
  //隐藏控件
  this.hide = function(){
    $("#" + that.setting.targetID).hide();
  }
  this.init = function(){
    //显示之前执行回调函数
    if(typeof that.setting.beforeShow == "function"){
      that.setting.beforeShow(that);
    }
    //存放字符串的变量
    var targetHTML = '';
    //将内容存放到指定的容器中,默认存放到body最底部
    if(that.setting.targetConater != "" && this.setting.targetConater != undefined){
      targetHTML = '<img src="' + that.setting.imgUrl + '" class="' + that.setting.imgClass + '" id="' + that.setting.targetID + '" style="display:none;">';
      $(that.setting.targetConater).html(targetHTML);
    }else{
      targetHTML = '<img src="' + that.setting.imgUrl + '" class="' + that.setting.imgClass + '">';
      targetHTML = '<div id="' + that.setting.targetID + '" style="display:none;position: absolute;top:50%;left: 50%;height: ' + that.getScreenHeight()+';width:'+that.getScreenWidth()+'">' + targetHTML + '</div>';
      $("body").append(targetHTML);
    }
    //判断用户是否自定义了图片的宽度
    if(that.setting.imgWidth != "" && that.setting.imgWidth.indexOf("px")>0 ){
      $("#"+targetID).css("width",that.setting.imgWidth);
    }
    //显示之后执行回调函数
    if(typeof that.setting.afterShow == "function"){
      that.setting.afterShow(that,targetID);
    }
  }
  this.init();
}
</script>

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
学习YUI.Ext基础第一天
Mar 10 Javascript
javascript 混合的构造函数和原型方式,动态原型方式
Dec 07 Javascript
JQuery 中几个类选择器的简单使用介绍
Mar 14 Javascript
div当滚动到页面顶部的时候固定在顶部实例代码
May 27 Javascript
基于SVG的web页面图形绘制API介绍及编程演示
Jun 28 Javascript
JavaScript创建对象的写法
Aug 29 Javascript
分享Javascript实用方法二
Dec 13 Javascript
Vue 固定头 固定列 点击表头可排序的表格组件
Nov 25 Javascript
ES6学习笔记之Set和Map数据结构详解
Apr 07 Javascript
JavaScript伪数组用法实例分析
Dec 22 Javascript
jQuery+datatables插件实现ajax加载数据与增删改查功能示例
Apr 17 jQuery
Vue2.x Todo之自定义指令实现自动聚焦的方法
Jan 08 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
Jun 17 #Javascript
基于Bootstrap的UI扩展 StyleBootstrap
Jun 17 #Javascript
Bootstrap前端开发案例二
Jun 17 #Javascript
jQuery查看选中对象HTML代码的方法
Jun 17 #Javascript
Bootstrap前端开发案例一
Jun 17 #Javascript
JS实现的自定义水平滚动字体插件完整实例
Jun 17 #Javascript
基于JS实现导航条之调用网页助手小精灵的方法
Jun 17 #Javascript
You might like
PHP校验ISBN码的函数代码
2011/01/17 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
phpStudy配置多站点多域名和多端口的方法
2017/09/01 PHP
PHP实现数组的笛卡尔积运算示例
2017/12/15 PHP
javascript面向对象编程(一) 实例代码
2010/06/25 Javascript
jquery 跨域访问问题解决方法(笔记)
2011/06/08 Javascript
页面载入结束自动调用js函数示例
2013/09/23 Javascript
from表单多个按钮提交用onclick跳转不同action
2014/04/24 Javascript
jQuery制作仿Mac Lion OS滚动条效果
2015/02/10 Javascript
Jquery判断radio、selelct、checkbox是否选中及获取选中值方法总结
2015/04/15 Javascript
JS实现字符串转日期并比较大小实例分析
2015/12/09 Javascript
总结JavaScript设计模式编程中的享元模式使用
2016/05/21 Javascript
bootstrap datepicker限定可选时间范围实现方法
2016/09/28 Javascript
JavaScript函数节流的两种写法
2017/04/07 Javascript
JavaScript生成指定范围随机数和随机序列的方法
2018/05/05 Javascript
js时间戳转yyyy-MM-dd HH-mm-ss工具类详解
2019/04/30 Javascript
解决vue打包后vendor.js文件过大问题
2019/07/03 Javascript
关于layui的动态图标不显示的解决方法
2019/09/04 Javascript
JavaScript Image对象实现原理实例解析
2020/08/26 Javascript
[55:03]LGD vs EG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
[08:54]DOTA2-DPC中国联赛 正赛 Aster vs LBZS 选手采访
2021/03/11 DOTA
讲解Python中for循环下的索引变量的作用域
2015/04/15 Python
Python使用PyCrypto实现AES加密功能示例
2017/05/22 Python
Python实现将SQLite中的数据直接输出为CVS的方法示例
2017/07/13 Python
利用python解决mysql视图导入导出依赖的问题
2017/12/17 Python
Python面向对象基础入门之设置对象属性
2018/12/11 Python
Pycharm如何运行.py文件的方法步骤
2020/03/03 Python
如何基于Python爬取隐秘的角落评论
2020/07/02 Python
HTML5+CSS3绘制锯齿状的矩形
2016/03/01 HTML / CSS
布鲁明戴尔百货店:Bloomingdale’s
2016/12/21 全球购物
老板电器官方购物商城:老板油烟机、燃气灶、消毒柜、电烤箱
2018/05/30 全球购物
EJB的角色和三个对象
2015/12/31 面试题
大学生的网上创业计划书
2013/12/31 职场文书
离婚协议书范本
2015/01/26 职场文书
环卫处个人工作总结
2015/03/04 职场文书
因工资原因离职的辞职信范文
2015/05/12 职场文书