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 相关文章推荐
javascript,jquery闭包概念分析
Jun 19 Javascript
jQuery实现带滑动条的菜单效果代码
Aug 26 Javascript
vuejs动态组件给子组件传递数据的方法详解
Sep 09 Javascript
Angular JS数据的双向绑定详解及实例
Dec 31 Javascript
canvas绘制环形进度条
Feb 23 Javascript
jQuery复合事件用法示例
Jun 10 jQuery
原生JS实现日历组件的示例代码
Sep 22 Javascript
Vue实现动态创建和删除数据的方法
Mar 17 Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
Aug 20 Javascript
微信小程序遍历Echarts图表实现多个饼图
Apr 25 Javascript
解决layui调用自定义方法提示未定义的问题
Sep 14 Javascript
JQuery通过键盘控制键盘按下与松开触发事件
Aug 07 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
用PHP+MySql编写聊天室
2006/10/09 PHP
PHP在引号前面添加反斜杠(PHP去除反斜杠)
2013/09/28 PHP
教你如何使用php session
2013/10/28 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
轻松掌握php设计模式之访问者模式
2016/09/23 PHP
PHP实现数据库的增删查改功能及完整代码
2018/04/18 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
2018/06/22 PHP
下载网站打开页面后间隔多少时间才显示下载链接地址的代码
2010/04/25 Javascript
Jquery.TreeView结合ASP.Net和数据库生成菜单导航条
2010/08/27 Javascript
jquery 提示信息显示后自动消失的具体实现
2013/12/18 Javascript
js中用window.open()打开多个窗口的name问题
2014/03/13 Javascript
javascript如何判断输入的url是否正确
2014/04/11 Javascript
nodejs教程之入门
2014/11/21 NodeJs
jQuery通过控制节点实现仅在前台通过get方法完成参数传递
2015/02/02 Javascript
javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2015/04/01 Javascript
javascript限制文本框输入值类型的方法
2015/05/07 Javascript
火狐和ie下获取javascript 获取event的方法(推荐)
2016/11/26 Javascript
清除浏览器缓存的几种方法总结(必看)
2016/12/09 Javascript
JS原生数据双向绑定实现代码
2017/08/14 Javascript
jQuery实现的简单图片轮播效果完整示例
2018/02/08 jQuery
Vue绑定内联样式问题
2018/10/17 Javascript
axios+Vue实现上传文件显示进度功能
2019/04/14 Javascript
详解Python中的分组函数groupby和itertools)
2018/07/11 Python
使用python3批量下载rbsp数据的示例代码
2019/12/20 Python
Python3变量与基本数据类型用法实例分析
2020/02/14 Python
jupyter notebook 增加kernel教程
2020/04/10 Python
django 利用Q对象与F对象进行查询的实现
2020/05/15 Python
Python如何实现远程方法调用
2020/08/07 Python
基于HTML5的齿轮动画特效
2016/02/29 HTML / CSS
Agoda西班牙:全球特价酒店预订
2017/06/03 全球购物
白兰氏健康Mall:BRAND’S
2017/11/13 全球购物
Lookfantastic瑞典:英国知名美妆购物网站
2018/04/06 全球购物
巴西补充剂和维生素购物网站:Natue
2019/06/17 全球购物
冬季作息时间调整通知
2015/04/24 职场文书
结婚主持人致辞
2015/07/28 职场文书
创业计划书介绍
2019/04/24 职场文书