由于某个jsp页面要实现较长等待时间功能的时候,对于用户,此时IE中是空白页。
如何让处理过程中出现等待的提示,我把自己的解决思路奉献给大家。
创建一个等待页面, 包含两个层layer1,layer2.layer1出现等待提示,layer2 包含iframe,利用iframe调用你那个长时间的jsp。开始时layer2隐藏,layer1显示。
等jsp处理结束后,利用
<script language="javascript"> if(parent.layer3.style.display!="block") { parent.layer1.style.display="none"; parent.layer2.style.display="block"; }
把提示的哪个层隐藏,自己的层显示。
下面为我的等待页代码:
<%@ page contentType="text/html; charset=GBK" %> <html> <head> <title> 机动车统计 </title> </head> <style type="text/css"> <!-- body { margin-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; } --> </style> <body bgcolor="#C0C0C0"> <% String sBeginDate=request.getParameter("startDate"); String sEndDate=request.getParameter("endDate"); String sBeginGLBM=request.getParameter("startGLBM"); String IsChk=(String)request.getParameter("IsChk"); String sPreStatisticYear=(String)request.getParameter("preStatisticYear"); String sStatisticYear=(String)request.getParameter("StatisticYear"); String sEndGLBM=request.getParameter("endGLBM"); String strUrl=request.getParameter("url"); String strTj = strUrl + "?startDate=" + sBeginDate+"&endDate="+ sEndDate + "&IsChk="+ IsChk + "&preStatisticYear="+ sPreStatisticYear+"&StatisticYear="+sStatisticYear+"&startGLBM="+sBeginGLBM+"&endGLBM="+sEndGLBM; %> <div style="position: absolute; width: 100%; height: 100%; z-index: 1" id="layer1"> <p align="center"> </p> <p align="center"> </p> <table align="center"><tr><td> <div style="font-size:8pt;padding:2px;border:solid black 1px"> <span id="progress1"> </span> <span id="progress2"> </span> <span id="progress3"> </span> <span id="progress4"> </span> <span id="progress5"> </span> <span id="progress6"> </span> <span id="progress7"> </span> <span id="progress8"> </span> <span id="progress9"> </span> </div> </td></tr></table> <script language="javascript"> var progressEnd = 9; // set to number of progress <span>'s. var progressColor = 'blue'; // set to progress bar color var progressInterval = 1000; // set to time between updates (milli-seconds)
var progressAt = progressEnd; var progressTimer; function progress_clear() { for (var i = 1; i <= progressEnd; i++) document.getElementById('progress'+i).style.backgroundColor = 'transparent'; progressAt = 0; } function progress_update() { progressAt++; if (progressAt > progressEnd) progress_clear(); else document.getElementById('progress'+progressAt).style.backgroundColor = progressColor; progressTimer = setTimeout('progress_update()',progressInterval); } function progress_stop() { clearTimeout(progressTimer); progress_clear(); } progress_update(); // start progress bar </script>
<p align="center"><b><font size="4" face="黑体">处理数据中,请稍后。。。。。。。</font></b></p> </div> <div style="position: absolute; width: 100%; height: 100%; z-index: 1" id="layer2"> <iframe name="I2" marginwidth="1" marginheight="1" height="100%" width="100%" src="<%=strTj%> "> 浏览器不支持嵌入式框架,或被配置为不显示嵌入式框架。</iframe></div> <div style="position: absolute; width: 100%; height: 100%; z-index: 1" id="layer3"> <p align="center"> </p> <p align="center"> </p> <p align="center"> </p> <p align="center"><b><font size="4" face="黑体" color="blue">处 理 数 据 出 错!</font></b></p> <p align="center"><textarea rows="15" name="S1" cols="53"></textarea></p> <p align="center"><input type="button" value=" 关 闭 " name="B3" onclick="window.close()"></p> </div>
<script language="javascript"> layer2.style.display="none"; layer3.style.display="none"; </script> </body> </html>

|