JS基于Ajax实现的网页Loading效果代码


Posted in Javascript onOctober 27, 2015

本文实例讲述了JS基于Ajax实现的网页Loading效果代码。分享给大家供大家参考,具体如下:

这是一款很不错的网页Loading效果,常用于Ajax交互式网页设计中,点击按钮即可弹出Loading框,若Loading框未加载完成时关闭网页,会弹出确认提示框,用于一些对安全性能要求高的网页交互处理中,比如付款操作。

运行效果截图如下:

JS基于Ajax实现的网页Loading效果代码

在线演示地址如下:

具体代码如下:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>很不错的网页Ajax Loading效果</title>
</head>
<BODY STYLE="FONT-SIZE: 10pt; FONT-FAMILY: Verdana, Arial, Helvetica">
<SCRIPT LANGUAGE="JScript">
var NUMBER_OF_REPETITIONS = 40;
var nRepetitions = 0;
var g_oTimer = null;
function startLongProcess()
{
  divProgressDialog.style.display = "";
  resizeModal();
  btnCancel.focus();
  window.onresize = resizeModal;
  window.onbeforeunload = showWarning;
  continueLongProcess();
}
function updateProgress(nNewPercent)
{
  divProgressInner.style.width = (parseInt(divProgressOuter.style.width)
   * nNewPercent / 100)+ "px";
}
function stopLongProcess()
{
  if (g_oTimer != null)
  {
   window.clearTimeout(g_oTimer);
   g_oTimer = null;
  }
  // Hide the fake modal DIV
  divModal.style.width = "0px";
  divModal.style.height = "0px";
  divProgressDialog.style.display = "none";
  // Remove our event handlers
  window.onresize = null;
  window.onbeforeunload = null;
  nRepetitions = 0;
}
function continueLongProcess()
{
  if (nRepetitions < NUMBER_OF_REPETITIONS)
  {
   var nTimeoutLength = Math.random() * 250;
   updateProgress(100 * nRepetitions / NUMBER_OF_REPETITIONS);
   g_oTimer = window.setTimeout("continueLongProcess();", nTimeoutLength);
   nRepetitions++;
  }
  else
  {
   stopLongProcess();
  }
}
function showWarning()
{
  return "Navigating to a different page or refreshing the window could cause you to lose precious data.\n\nAre you*absolutely* certain you want to do this?";
}
function resizeModal()
{
  divModal.style.width = document.body.scrollWidth;
  divModal.style.height = document.body.scrollHeight;
  divProgressDialog.style.left = ((document.body.offsetWidth -
divProgressDialog.offsetWidth) / 2);
  divProgressDialog.style.top = ((document.body.offsetHeight -
divProgressDialog.offsetHeight) / 2);
}
</SCRIPT>
<INPUT TYPE="BUTTON" VALUE="Click Me!" onclick="startLongProcess();">
<!-- BEGIN PROGRESS DIALOG -->
<DIV STYLE="BORDER: buttonhighlight 2px outset; FONT-SIZE: 8pt; Z-INDEX:
4; FONT-FAMILY: Tahoma; POSITION: absolute; BACKGROUND-COLOR: buttonface;
DISPLAY: none; WIDTH: 350px; CURSOR: default" ID="divProgressDialog"
onselectstart="window.event.returnValue=false;">
  <DIV STYLE="PADDING: 3px; FONT-WEIGHT: bolder; COLOR: captiontext;
BORDER-BOTTOM: white 2px groove; BACKGROUND-COLOR: activecaption">
   加载中……  </DIV>
  <DIV STYLE="PADDING: 5px">
   请稍等,网页正在处理中……
  </DIV>
  <DIV STYLE="PADDING: 5px">
   可能需要数秒钟.
  </DIV>
  <DIV STYLE="PADDING: 5px">
     <DIV ID="divProgressOuter" STYLE="BORDER: 1px solid threedshadow;
WIDTH: 336px; HEIGHT: 15px">
      <DIV ID="divProgressInner" STYLE="COLOR: white; TEXT-ALIGN:
center; BACKGROUND-COLOR: infobackground; MARGIN: 0px; WIDTH: 0px; HEIGHT:
13px;"></DIV>
     </DIV>
  </DIV>
  <DIV STYLE="BORDER-TOP: white 2px groove; PADDING-BOTTOM: 5px; PADDING-TOP: 3px;
BACKGROUND-COLOR: buttonface; TEXT-ALIGN: center">
     <INPUT STYLE="FONT-FAMILY: Tahoma; FONT-SIZE: 8pt" TYPE="button"
ID="btnCancel" onclick="stopLongProcess();" VALUE="取消">
  </DIV>
</DIV>
<!-- END PROGRESS DIALOG -->
<!-- BEGIN FAKE MODAL DIV-->
<DIV ID="divModal"
  STYLE="BACKGROUND-COLOR: white; FILTER: alpha(opacity=75); LEFT: 0px; POSITION:
 absolute; TOP: 0px; Z-INDEX: 3"
  onclick="window.event.cancelBubble=true; window.event.returnValue=false;">
</DIV>
<!-- END FAKE MODAL DIV -->
</body>
</html>

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

Javascript 相关文章推荐
用tip解决Ext列宽度不够的问题
Dec 13 Javascript
js控制div及网页相关属性的代码
Dec 19 Javascript
javascript 拖放效果实现代码
Jan 22 Javascript
javascript 节点排序 2
Jan 31 Javascript
jquery调用asp.net 页面后台的实现代码
Apr 27 Javascript
根据Bootstrap Paginator改写的js分页插件
Dec 25 Javascript
一篇文章搞定JavaScript类型转换(面试常见)
Jan 21 Javascript
Easyui使用Dialog行内按钮布局的实例
Jul 27 Javascript
10分钟上手vue-cli 3.0 入门介绍
Apr 04 Javascript
WebPack配置vue多页面的技巧
May 15 Javascript
解决axios发送post请求返回400状态码的问题
Aug 11 Javascript
JQuery绑定事件四种实现方法解析
Dec 02 jQuery
基于Jquery+div+css实现弹出登录窗口(代码超简单)
Oct 27 #Javascript
JS实现浏览器状态栏文字闪烁效果的方法
Oct 27 #Javascript
JS实现浏览器状态栏显示时间的方法
Oct 27 #Javascript
JavaScript模块规范之AMD规范和CMD规范
Oct 27 #Javascript
JS实现浏览器状态栏文字从右向左弹出效果代码
Oct 27 #Javascript
jQuery无刷新分页完整实例代码
Oct 27 #Javascript
js数组如何添加json数据及js数组与json的区别
Oct 27 #Javascript
You might like
基于pear auth实现登录验证
2010/02/26 PHP
一个简单的网页密码登陆php代码
2012/07/17 PHP
深入探讨:Nginx 502 Bad Gateway错误的解决方法
2013/06/03 PHP
php实现二进制和文本相互转换的方法
2015/04/18 PHP
php微信开发之谷歌测距
2018/06/14 PHP
jQuery 的全选(全非选)即取得被选中的值使用介绍
2013/11/12 Javascript
javascript编写贪吃蛇游戏
2015/07/07 Javascript
JavaScript实现页面无操作倒计时退出
2016/10/22 Javascript
ztree简介_动力节点Java学院整理
2017/07/19 Javascript
AngularJS表单验证功能
2017/10/19 Javascript
在HTML文档中嵌入JavaScript的四种方法
2018/05/07 Javascript
Node.js进阶之核心模块https入门
2018/05/23 Javascript
ES6入门教程之Array.from()方法
2019/03/23 Javascript
ES6入门教程之变量的解构赋值详解
2019/04/13 Javascript
Javascript ParentNode和ChildNode接口原理解析
2020/03/16 Javascript
《javascript设计模式》学习笔记七:Javascript面向对象程序设计组合模式详解
2020/04/08 Javascript
[02:07]2018DOTA2亚洲邀请赛主赛事第三日五佳镜头 fy极限反杀
2018/04/06 DOTA
python使用wxpython开发简单记事本的方法
2015/05/20 Python
在Python的Flask框架中验证注册用户的Email的方法
2015/09/02 Python
python实现识别相似图片小结
2016/02/22 Python
Python3中类、模块、错误与异常、文件的简易教程
2017/11/20 Python
python利用插值法对折线进行平滑曲线处理
2018/12/25 Python
python构建指数平滑预测模型示例
2019/11/21 Python
Django后台管理系统的图文使用教学
2020/01/20 Python
解决Pycharm中恢复被exclude的项目问题(pycharm source root)
2020/02/14 Python
利用python画出AUC曲线的实例
2020/02/28 Python
Python使用扩展库pywin32实现批量文档打印实例
2020/04/09 Python
PyCharm设置注释字体颜色以及是否倾斜的操作
2020/09/16 Python
html5拖曳操作 HTML5实现网页元素的拖放操作
2013/01/02 HTML / CSS
html5通过postMessage进行跨域通信的方法
2017/12/04 HTML / CSS
芬兰攀岩、山地运动和户外活动用品购物网站:Bergfreunde
2016/10/06 全球购物
Zavvi西班牙:电子游戏、极客服装、Blu-ray、Funko Pop等
2019/05/03 全球购物
世界上最大的乐谱选择:Sheet Music Plus
2020/01/18 全球购物
追悼会悼词大全
2015/06/23 职场文书
2016年春节慰问信息大全
2015/11/30 职场文书
Python中文分词库jieba(结巴分词)详细使用介绍
2022/04/07 Python