I solved it like this:
- Add text element in a div
- Hide div in body onload
- For each progress update call update_progress function ("up") wrapped inside <script> tags. If all calls are made inside one script tag, they are executed when browser encounters closing script tag, which is in my case - when the processing ends
example of output:
[HTML]<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>page title</title>
</head>
<body onload="document.getElementById('progress').style. display='none'">
<div id="progress"><br />Progress: <input type="text" id="progressText" value="0%" readonly="readonly">
</div>
<script type="text/javascript">
var pp = document.getElementById("progressText");
function up(p)
{
pp.value=p.toString(10)+'%';
}
</script>
<script type="text/javascript">
up(1);
</script>
<script type="text/javascript">
up(2);
</script>
<script type="text/javascript">
up(3);
</script>
...
<script type="text/javascript">
up(97);
</script>
<script type="text/javascript">
up(98);
</script>
<script type="text/javascript">
up(99);
</script>
<script type="text/javascript">
up(100);
</script>
<br />
<br /><h2>Success</h2><br />
-rest of page-
</body>
</html>[/HTML]of course[HTML]<script type="text/javascript">
up(2);
</script>[/HTML]are generated in a for loop with this:
- if (percentage.intValue() > oldPrecentage) {
-
oldPrecentage = percentage.intValue();
-
out.printf(progressString, new Object[]{percentage});
-
out.flush();
-
}
-
with
- progressString="<script type=\"text/javascript\">\nup(%d);\n</script>\n";
Dženan