Salve a tutti, ho modificato uno script che stampa una frase con un effetto simile ad una macchina da scrivere, in modo che stampasse delle frasi contenute in un array, ad intervalli di 10 secondi. Lo script funziona, se non fosse per un piccolo particolare...
Se io cambio scheda, o metto ad icona il browser, lo script, una volta riaperta la pagina, inverte tutte le lettere durante l'effetto. Quando passa alla frase successiva, si risolve tutto.
Credo sia dovuto all'utilizzo errato che ho fatto della funzione setTimeout ma, essendo la prima volta che prendo in mano javascript, non riesco a capire dove possa essere l'errore.
Vi posto lo script:
codice:
<script type='text/javascript'>
function macchinaDaScrivere(id, text, speed, pos) {
var length = text.length;
pos = pos || 0;
if (pos < length) {
var char = text.substring(pos, pos + 1);
document.getElementById(id).innerHTML = document.getElementById(id).innerHTML.substring(0, pos) + char + "_";
setTimeout('macchinaDaScrivere("'+id+'", "'+text+'", '+speed+', '+(pos + 1)+');', speed);
}else{
document.getElementById(id).innerHTML = document.getElementById(id).innerHTML.substring(0, length);
}
}
function ticker(position) {
var id = "ticker";
var news = ["La creazione del sito è ancora in corso. Contattate in caso di errori...",
"Aggiunta la pagina Downloads.",
"Aggiunti moduli Youtube e News."];
var length = news.length;
var speed = 50;
var time = 10000;
position = position || 0;
if (position < length) {
text = news[position];
macchinaDaScrivere(id, text, speed);
} else {
time = 0;
position = -1;
}
setTimeout('ticker('+(position + 1)+')', time);
}
</script>
E il codice html:
codice:
<body onload="ticker()">
<div id="ticker"></div>
Grazie mille per l'aiuto e scusate se non sono riuscito a spiegarmi bene