Page 1 sur 2

Aide personnalisation Script JS "machine à ecrire"

Posté : 28 juin 2005, 10:01
par VaN
Le script "machine à écrire" récuperer sur le net :

Code : Tout sélectionner

<script language="JavaScript"> var i=0 var j=0 var texteNE, affiche // Initialisation du texte machine à écrire var texte ="<?php echo $result['texte']?>" var ie = (document.all); var ne = (document.layers); // Initialisation de la zone de texte function init(){ texteNE=''; machine_a_ecrire(); } // Affichage des caractères progressifs function machine_a_ecrire(){ texteNE=texteNE+texte.charAt(i) affiche=texteNE // teste si c'est une balise à HTML est insérée dans le texte if (texte.charAt(i)=="<") { j=1 } if (texte.charAt(i)==">") { j=0 } if (j==0) { // on fait l'affichage si ce n'est pas une balise HTML if (ie) { // avec internet explorer document.all("bulle").innerHTML = affiche; } if (ne) { // avec Netscape document.bulle.document.write(affiche); document.bulle.document.close(); } } if (i<texte.length-1){ i++ //modifier la valeur 100 pour un affichage plus rapide ou plus lent setTimeout("machine_a_ecrire()",100) } else return } </script>
un petit truc me chagrine, le message s'affiche une fois, puis reste affiché. j'aimerais le personnaliser pour qu'une fois affiché, il s'efface d'un coup et que le script redémarre. Une sorte de boucle quoi. Mais je ne connait rien au JS. est ce que l'insérer dans une boucle php qui tournerait à l'infini est une solution envisageable ?

Posté : 28 juin 2005, 10:28
par Cyrano
...une boucle php qui tournerait à l'infini...
Non, parce que ta boucle va s'arrêter au bout de trente seconde (time out par défaut sur le serveur et tant que le script n'aura pas terminé, tu n'auras rien d'affiché sur ta page.

Re: Aide personnalisation Script JS "machine à ecrire&q

Posté : 28 juin 2005, 10:29
par albat
est ce que l'insérer dans une boucle php qui tournerait à l'infini est une solution envisageable ?
Quel intérêt de mélanger des langages qu'on ne fait pas appel à leurs spécificités ?
Utiliser PHP ne t'apporte rien dans ce cas précis puisque ton script de machine à écrire est côté client.
Tu peux donc très bien créer ta boucle en javascript, ce sera plus homogène et ça ne sollicitera pas le servuer. ;)

Posté : 28 juin 2005, 10:41
par VaN
après quelques renseignements prit sur le net, j'essaie de faire comme ceci :

var compteur = 1;

do {
...
}
while(compteur>0);

mais je n'arrive pas à trouver où mettre la boucle. En mettant l'intégralité du script à l'interieur, le browser plante. J'ai essayé autour de

Code : Tout sélectionner

function init(){ texteNE=''; machine_a_ecrire(); }
et autour de

Code : Tout sélectionner

function init(){ texteNE=''; machine_a_ecrire(); } function machine_a_ecrire(){ texteNE=texteNE+texte.charAt(i) affiche=texteNE }
sans résultats. Ou doit se placer ma boucle ?

Posté : 28 juin 2005, 15:43
par VaN
je n'ai toujours pas trouvé ou placer cette boucle, et comment la formuler, pour que mon texte s'efface et se repete indefiniment :/
un conseil ?

Re: Aide personnalisation Script JS "machine à ecrire&a

Posté : 28 juin 2005, 16:42
par albat
<script type="text/javascript">
var i=0;
var j=0;
var texteNE, affiche;
var texte ="<?php echo $result['texte']; ?>";
var ie = (document.all);
var ne = (document.layers); 

function init()
{ while (1==1)
        { texteNE='';
          machine_a_ecrire();
        }
}

function machine_a_ecrire()
{ texteNE = texteNE + texte.charAt(i);
  affiche = texteNE;
  if (texte.charAt(i)=="<") j=1;
  if (texte.charAt(i)==">") j=0;
  if (j==0)
     { if (ie)
          document.all("bulle").innerHTML = affiche;
       if (ne)
          { document.bulle.document.write(affiche);
            document.bulle.document.close();
          }
     }
  if (i<texte.length-1)
     { i++;
       setTimeout("machine_a_ecrire()",100);
     }
     else return;
}
</script>
Essaie avec ça.
J'ai modifié la fonction init() mais je ne garantis pas (pas testé).

En revanche, j'en ai profité pour corriger ton code qui n'était pas très propre... ;)

Posté : 28 juin 2005, 18:17
par VaN
==> plantage de browser :lol:

Posté : 28 juin 2005, 18:24
par albat
Aurais-je merdu quelque part ?... :lol:

Effectivement, la fonction init() qui s'auto-boucle, c'est vorace.
Pas top top, mon idée. Mais il fait chaud et j'ai pas d'autre idée...

Posté : 29 juin 2005, 16:38
par VaN
:cry:

Posté : 01 juil. 2005, 14:14
par VaN
^^ toujours pas réussi a boucler ma fonction : /

Posté : 01 juil. 2005, 14:55
par albat
Je manque d'idées...
Tu peux aussi tenter ça :
function init()
{ texteNE='';
   machine_a_ecrire();
  init();
}
mais j'ai bien peur que ça fasse aussi planter ton navigateur.
Et puis, c'est pas propre.

Quelqu'un aurait une suggestion ?

Posté : 01 juil. 2005, 15:00
par VaN
mais j'ai bien peur que ça fasse aussi planter ton navigateur.
gagné :lol: :roll: :cry:

Posté : 01 juil. 2005, 15:11
par albat
Pas surprenant, hélas.

Ne serait-il pas plus simple de chercher sur le web un script de machine à écrire qui boucle ?
Ça doit exister, non ?

Posté : 04 juil. 2005, 09:31
par VaN
deja cherché, recherche infructueuse hélas : / il n'y a deja pas masse de script machine a ecrire, alors en plus qui boucle.. :cry:

Posté : 04 juil. 2005, 12:30
par albat
Il me semble que le script que tu as récupéré provient de :
- http://www.asp-magazine.com/fr/javascri ... es/tr3.htm
- http://www.editeurjavascript.com/script ... _3_207.php

Mais si tu regardes ailleurs, tu en trouveras qui bouclent :
- http://pagesperso.accesinternet.laposte ... 987522025/
- http://perso.wanadoo.fr/patrice.roatta/ ... niere.html
- http://www.flashkod.com/code.aspx?ID=23789

Tu es sûr d'avoir bien cherché ?
Un simple coup de :google: m'a suffi. ;)