Aaron Fude wrote:
Hi,
I have report that takes about 5-10 seconds to generate depending on the
load. I want to show the user a progress bar while it is being generated and
when it's done, forward the browser to the report.
Any suggestions?
Thank you!
Aaron
One of the ways of handling this is to open a window when the form is submitted,
and close it once the report is completely loaded. It relies client-side
JavaScript being enabled (of course) and on the browser's ability to respond
appropriately to window.open() which many browsers will not do due to popup
blockers.
-- on the page used to initate generation of the report:
<input type="submit" value="Generate Report" onclick="openStatusWindow();">
<script type="text/javascript">
function openStatusWindow() {
if (window.open) {
var throwAway = window.open(
'status.html',
'statusWindow',
'width=400,height=200'
);
}
}
</script>
-- status.html:
<html>
<head>
<title>Generating report... please wait</title>
<script type="text/javascript">
function holdFocus() {
var t = setTimeout(holdFocus, 1000);
window.focus();
holdFocus.toString = function() {
return 'holdFocus();';
}
}
</script>
</head>
<body onload="holdFocus();">
<p align="center">Generating report... please wait</p>
</body>
</html>
-- on the page containing the resulting report:
<body onload="closeStatusWindow();">
<script type="text/javascript">
function closeStatusWindow() {
if (window.open) {
var w = window.open(
'about
:blank',
'statusWindow',
'width=400,height=200'
);
if (w && !w.closed) {
w.close();
}
}
}
</script>
It's necessary to call window.open() again on the window named "statusWindow".
If you do not, you will not have a reference (handle) to it, and will not be
able to close it. I tested it in IE6SP1, Netscape 4.78, Firefox 0.9.2 and Opera
7.53 and it allowed me to open and close the window without holding a reference
to it.
--
Grant Wagner <gw*****@agricoreunited.com>
comp.lang.javascript FAQ -
http://jibbering.com/faq