Bonjour � tous.
Soit j'oublie quelque chose d'�norme, soit IE prouve une fois de plus son originalit�. Soit une classe HArray d�riv�e de Array :
1 - code minimaliste pour HArray :
o� g_dbg est une instance (variable globale) d'une classe utilitaire qui enregistre les traces, comme le nom de la m�thode l'indique, et les restitue ensuite sur demande. Rien de sp�cial donc.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 HArray.prototype = new Array(); // @in src = argument facultatif spécifiant un tableau à copier function HArray(src) { if( !!src ) this.copy(src); } HArray.prototype.copy = HArray_copy; // @in src = tableau à copier function HArray_copy(src) { g_dbg.addTrace("-------> HArray_copy : src.length = " + src.length) this.splice(0); if( !!src ) for( var i = 0; i < src.length; ++ i ) this.push(src[i]); g_dbg.addTrace("-------> HArray_copy : this.length = " + this.length) }
2 - code de test :
out prend un pointeur encapsul� sur le div 'HArray_TestIE', on initialise un HArray et on �crit les traces dans le div.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11 <h1>Vérif IE</h1> <script language="javascript"><!-- function test1() { var out = $dyn($id('HArray_TestIE')); g_dbg.addTrace("test1"); var arr = new HArray(new Array(0, 1, 2, 3, 4, 5)); for(var i = 0; i < g_dbg.getTraces().length; ++ i ) out.setText(g_dbg.getTraces()[i], true, 'br'); } --></script> <div id="HArray_TestIE" style="background-color:#F0F0F0"></div> <button onclick="test1()">test1</button>
R�sultat :
3 - traces sous Firefox et Opera conforme � mes attentes :
4 - traces sous IE7 :mardi 20 novembre 2007 12:11:25 === test1
mardi 20 novembre 2007 12:11:25 === -------> HArray_copy : src.length = 6
mardi 20 novembre 2007 12:11:25 === -------> HArray_copy : this.length = 6
mardi 20 novembre 2007 12:19:17 === test1
mardi 20 novembre 2007 12:19:17 === -------> HArray_copy : src.length = 6
mardi 20 novembre 2007 12:19:17 === -------> HArray_copy : this.length = 0
Conclusion : IE7 ne traite pas correctement Array.push() pour les classes d�riv�es ???? Avez-vous des �claircissements l�-dessus ou bien est-ce que je fais une grosse b�tise quelque part ? Eventuellement, avez-vous des suggestions pour un wouhorqe heurrahounde ?
Partager