Bonjour à tous,

j'ai un soucis au niveau de la charge processeur avec une de mes fonctions javascript.
Cette fonction pourtant simple, qui affiche un texte lettre par lettre, arrive à faire ramer un pc qui a 5 ans et à utiliser 50% de mon AMD Turion 64 x2 cadencé à 1,61 GHz ce qui est énorme je trouve, je me suis aperçu de ce soucis en testant les outils pour développeur présent sur Google Chrome qui sont plutôt interessants pour la programmation en javascript

voici ma fonction:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
<SCRIPT LANGUAGE=JavaScript>
ejs_box2_message = new Array;
ejs_box2_message[1] = 'Bonjour';
ejs_box2_actual = 0;
             ejs_box2_html_flag = 0;
 
             function ejs_box2_go()
                 {
                 if(document.getElementById)
                     {
                     ejs_box2_char = 1;
                     ejs_box2_affich(ejs_box2_actual)
                     ejs_box2_actual++;
                     if(ejs_box2_actual >= ejs_box2_message.length)
                         ejs_box2_actual = 0;
                     }        
                 }
 
             function ejs_box2_affich(lactual)
                 {
                 var pix = ejs_box2_message[lactual].charAt(ejs_box2_char);
                 if(pix == "<")
                     ejs_box2_html_flag = 1;
                 if(pix == ">")
                     ejs_box2_html_flag = 0;
                 var texte = ejs_box2_message[lactual].substring(0,ejs_box2_char);
                 document.getElementById("ejs_box2_box").innerHTML = texte;
                 if(ejs_box2_char < ejs_box2_message[lactual].length)
                     {
                     ejs_box2_char++;
                     if(ejs_box2_html_flag == 1)    
                         ejs_box2_affich(lactual);
                     else
                         setTimeout("ejs_box2_affich("+lactual+")",50)
                     }
                 else
                     setTimeout("ejs_box2_go()",3000)
                 }
 
             window.onload = ejs_box2_go;
Mais ce n'est pas la première fois que je remarque ce soucis mais la fois précédente je faisais un carroussel avec des images et je pensais que c'était à cause du poids des images et de la complexité de la fonction. Mais là j'ai du mal à comprendre.

Merci d'avance