Ik dacht geniaal te zijn en heb in een JS functie die een beetje tijd vrat, een kleine progress bar in elkaar gedraaid. Was met Opera aan het testen alles werkte goed ... todat ik op Firefox en IE ging testen. Onderstaande code is een werkende maar vereenvoudigde versie van de werkelijkheid (heb het zo compact mogelijk samengevat, svp niet klagen over structuur).
Bij Opera verschijnen de blokjes 1 voor 1,
Bij Firefox en IE pas als JavaScript is afgelopen.
Als ik de nu uitgecommentarieerde alert gebruik komt alles wel blokje voor blokje. Ik heb het ook met images geprobeerd en dan de src veranderen ... ook geen resultaat.
Het lijkt er op dat JS de schermopbouw blokkeert ... weet iemand hier de achtergrond van (en eventueel een oplossing)?
Bij Opera verschijnen de blokjes 1 voor 1,
Bij Firefox en IE pas als JavaScript is afgelopen.
Als ik de nu uitgecommentarieerde alert gebruik komt alles wel blokje voor blokje. Ik heb het ook met images geprobeerd en dan de src veranderen ... ook geen resultaat.
Het lijkt er op dat JS de schermopbouw blokkeert ... weet iemand hier de achtergrond van (en eventueel een oplossing)?
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1250"> <script type="text/javascript"> var ProgressBarCounter = 0; function getObjectById(id) { var Obj; if (document.getElementById) { Obj = document.getElementById(id); } else if(document.layers) { Obj = document.layers[id]; } else { Obj = document.all.item(id); } return Obj; } function updateBar() { getObjectById("ID_"+ProgressBarCounter).style.border="1px solid #000000"; getObjectById("ID_"+ProgressBarCounter).style.backgroundColor="#aaaaaa"; ProgressBarCounter++; } function pause(NumberMillis) { var now = new Date(); var ExitTime = now.getTime() + NumberMillis; while (true) { now = new Date(); if (now.getTime() > ExitTime) return; } } function test( MaxCount ) { for( var Outer = 0; Outer < MaxCount; Outer++) { pause( 750 ); // dummy function call updateBar(); // alert( Outer ); } } </script> <title>Style test</title></head> <body><table><tr> <td id="ID_0"> </td><td id="ID_1"> </td><td id="ID_2"> </td> <td id="ID_3"> </td><td id="ID_3"> </td><td id="ID_4"> </td> <td id="ID_5"> </td><td id="ID_6"> </td><td id="ID_7"> </td> <td id="ID_8"> </td><td id="ID_9"> </td> </tr></table><script type="text/javascript">test(10);</script></body> </html> |
Niet quoten, zorgvuldige reacties volgens de regels worden zo weggewerkt: *knip*, reactie op geknipte reactie.