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 相关文章推荐
jqPlot Option配置对象详解
Jul 25 Javascript
Riot.js 快速的JavaScript单元测试框架
Nov 09 Javascript
JQuery中serialize()用法实例分析
Feb 06 Javascript
javascript实现在线客服效果
Jul 15 Javascript
JS+CSS实现大气的黑色首页导航菜单效果代码
Sep 10 Javascript
JS中递归函数
Jun 17 Javascript
jQuery EasyUI中的日期控件DateBox修改方法
Nov 09 Javascript
微信小程序本作用域下调用全局JS详解及实例
Feb 22 Javascript
Vue 2.0在IE11中打开项目页面空白的问题解决
Jul 16 Javascript
npm qs模块使用详解
Feb 07 Javascript
在Vue.js中使用TypeScript的方法
Mar 19 Javascript
将Vue组件库更换为按需加载的方法步骤
May 06 Javascript
基于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
简单的php数据库操作类代码(增,删,改,查)
2013/04/08 PHP
thinkPHP5框架设置404、403等http状态页面的方法
2018/06/05 PHP
PHP PDOStatement::bindValue讲解
2019/01/30 PHP
thinkPHP5.1框架中Request类四种调用方式示例
2019/08/03 PHP
分享一个asp.net pager分页控件
2012/01/04 Javascript
JS中不为人知的五种声明Number的方式简要概述
2013/02/22 Javascript
QQ空间顶部折页撕开效果示例代码
2014/06/15 Javascript
基于NodeJS的前后端分离的思考与实践(三)轻量级的接口配置建模框架
2014/09/26 NodeJs
简述JavaScript对传统文档对象模型的支持
2015/06/16 Javascript
JS组件Bootstrap Select2使用方法详解
2020/04/17 Javascript
js+canvas简单绘制圆圈的方法
2016/01/28 Javascript
js获取时间函数及扩展函数的方法
2016/10/30 Javascript
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法
2017/02/08 Javascript
BackBone及其实例探究_动力节点Java学院整理
2017/07/14 Javascript
基于require.js的使用(实例讲解)
2017/09/07 Javascript
Node.js学习之内置模块fs用法示例
2020/01/22 Javascript
Vue如何基于vue-i18n实现多国语言兼容
2020/07/17 Javascript
[01:14:19]NAVI vs Mineski 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
Python对多属性的重复数据去重实例
2018/04/18 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
2019/11/29 Python
基于python 等频分箱qcut问题的解决
2020/03/03 Python
python3 简单实现组合设计模式
2020/07/02 Python
python等待10秒执行下一命令的方法
2020/07/19 Python
Timberland美国官网:全球领先的户外品牌
2016/08/15 全球购物
彪马日本官网:PUMA日本
2019/01/31 全球购物
国际花店:Pickup Flowers
2020/04/10 全球购物
Python中如何定义一个函数
2016/09/06 面试题
大学生就业自荐信
2013/10/26 职场文书
CAD制图人员的自荐信
2014/02/07 职场文书
公务员更新知识培训实施方案
2014/03/31 职场文书
公司请假条范文
2014/04/11 职场文书
安全生产目标管理责任书
2014/07/25 职场文书
中学生旷课检讨书500字
2014/10/29 职场文书
2014年监理个人工作总结
2014/12/11 职场文书
大学生英文求职信范文
2015/03/19 职场文书
2015暑期社会实践通讯稿
2015/07/18 职场文书