前一阵做一个项目,在处理报表的时候时间偏长,客户提出要做出一个等待窗口提示用户等待(页面太久没反映,用户还以为死了呢)。在分析这一需求之后,觉得如果要实现像winform应用中的processbar太困难了。最后,只好模拟,做了一个“假”的等待窗体,还好客户也挺满意。
这个等待窗体实际上是利用了<object>标签完成的。因为动态效果由<marquee>完成,该等待窗体显示出来的时候,整个table是透明的,只有中间的过程条在动,后面的任何按钮都不能点击。
首先做一个静态页面:downloadExcel.html
<!-- .tborder { BORDER-RIGHT:#333333 2px solid; BORDER-TOP:#333333 2px solid; BORDER-LEFT:#333333 2px solid; BORDER-BOTTOM:#333333 2px solid; border-collapse:collapse; } .tborder1 { BORDER-RIGHT:#cccccc 3px solid; BORDER-BOTTOM:#cccccc 3px solid; border-collapse:collapse; } .dropShadow {filter:dropshadow(color=#a9a9a9,offx=2,offy=2,positive=true)} -->
|
然后在处理画面中加上这么一段:
<TABLE border="0" id="processBarMask" bgcolor="#cccccc" style="VISIBILITY:hidden; POSITION: absolute" cellspacing="0" cellpadding="0">
<TR>
<TD align="center">
<object type="text/x-scriptlet" id="objProcessBar" style="z-index:65535;" width="302" height="102" data="downloadExcel.html"></object>
</TD>
</TR>
</TABLE>
一开始是隐藏起来的。当点击处理按钮之后,就将它显示出来:
<SCRIPT language="javaScript">
var firstFlg = "0";
function processStart(){
with(document.all.processBarMask.style){
top = 0;
width = "100%";
height = "100%";
visibility = "visible";
}
document.all.processBarMask.focus();
}
function processEnd(){
document.all.processBarMask.style.visibility = "hidden";
}
</SCRIPT>
最后给处理按钮加上处理:
<input type="button" id="btnOK" value="OK" onclick="processStart()" style="width:80px">