Aangezien het tegenwoordig vrij simpel is om een site cross-browser te maken orienteer ik me extra op Mozilla. Waar ik de laatste tijd nogal eens tegenaan loop is het feit dat Internet Explorer het steeds vaker moet afleggen tegen Mozilla.
Zo heb ik bijvoorbeeld een array van ruim 600 vrij grote objecten. In een loop wordt hier doorheen gelopen om van een aantal properties van de objecten een HTML-tabel te maken. Deze tabel wordt uiteindelijk in een layer gegooid en zodoende zichtbaar gemaakt.
Vrij standaard, zou je zeggen. IE hangt echter enkele seconden het systeem op om de tabel te maken, terwijl Mozilla er totaal geen moeite mee heeft.
De Javascript code om de tabel te maken ziet er ongeveer zo uit:
Ik had eerst nog een for...in loop, maar dacht dat IE dat wellicht te ingewikkeld vond worden. Dat maakt dus niet uit.
Hoe komt het dat IE hier zo'n moeite mee heeft? Is er een manier om dit process te versnellen?
Edit: om duidelijk te maken dat ik geen onzin uitsla, heb ik bovenstaande loop getimed. Mozilla heeft strak en consequent 94 milliseconden nodig om dit klusje te klaren. Internet Explorer doet 't in maarliefst 40 seconden! Wat is hier aan de hand?
Zo heb ik bijvoorbeeld een array van ruim 600 vrij grote objecten. In een loop wordt hier doorheen gelopen om van een aantal properties van de objecten een HTML-tabel te maken. Deze tabel wordt uiteindelijk in een layer gegooid en zodoende zichtbaar gemaakt.
Vrij standaard, zou je zeggen. IE hangt echter enkele seconden het systeem op om de tabel te maken, terwijl Mozilla er totaal geen moeite mee heeft.
De Javascript code om de tabel te maken ziet er ongeveer zo uit:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| // Loop through objects var o; var nItems = this.objectlist.length; var s = '<table cellpadding="1" cellspacing="0" border="0">'; for (var i = 0; i < nItems; i++) { o = this.objectlist[i]; s += '<tr id="row'+o.id+'" onmouseover="rowOver('row'+o.id+'')" onmouseout="rowOut('row'+o.id+'')">'; s += '<td class="item" width="30" align="right">'+o.id+'</td>'; s += '<td class="item" width="30" align="center">'+o.somefield+'</td>'; s += '<td class="item" width="300">'+o.anotherfield+'</td>'; s += '<td class="item" width="40" align="center">'+o.yetanother+'</td>'; s += '</tr>'; } s += '</table>'; |
Ik had eerst nog een for...in loop, maar dacht dat IE dat wellicht te ingewikkeld vond worden. Dat maakt dus niet uit.
Hoe komt het dat IE hier zo'n moeite mee heeft? Is er een manier om dit process te versnellen?
Edit: om duidelijk te maken dat ik geen onzin uitsla, heb ik bovenstaande loop getimed. Mozilla heeft strak en consequent 94 milliseconden nodig om dit klusje te klaren. Internet Explorer doet 't in maarliefst 40 seconden! Wat is hier aan de hand?
[ Voor 23% gewijzigd door Explore op 28-10-2003 15:58 ]
[ specs ] [ Tweaker gallery ]



