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
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

Posté : 28 juin 2005, 18:24
par albat
Aurais-je merdu quelque part ?...
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
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é

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..

Posté : 04 juil. 2005, 12:30
par albat