Nelle passate settimane abbiamo mostrato come inserire testo decriptato sulla status bar del browser e mostrato come inserire data e ora sulla barra del titolo del browser (dove viene visualizzato il titolo del documento).
Questa settimana realizzaremo uno script che si pone come via di mezzo tra i due effetti, e che nel particolare visualizza il titolo della pagina come se si trattasse di testo decriptato.
L'esempio si compone di 3 file:
- esempio.htm
Per una più semplice comprensione del presente script fai continuamente riferimento ai file sopracitati, verificando le procedure e i dati espressi. Solo in questo modo, con un continuo confronto, comprenderai le peculiarità di questo Javascript.
Il codice javascript necessario al funzionamento di questa demo va inserito integralmente nell'intestazione di pagina, in particolare tra i tag <head>
<script language="JavaScript1.2">
if (document.all||document.getElementById){
var thetitle=document.title
document.title=''
}
var data="0123456789";
var done=1;
function statusIn(text){
decrypt(text,2,1);
}
function statusOut(){
self.status='';
done=1;
}
function decrypt(text, max, delay){
if (done){
done = 0;
decrypt_helper(text, max, delay, 0, max);
}
}
function decrypt_helper(text, runs_left, delay, charvar, max){
if (!done){
runs_left = runs_left - 1;
var status = text.substring(0,charvar);
for(var current_char = charvar; current_char < text.length;
current_char++){
status += data.charAt(Math.round(Math.random()*data.length));
}
document.title = status;
var rerun = "decrypt_helper('" + text + "'," + runs_left + "," + delay + "," +
charvar + "," + max + ");"
var new_char = charvar + 1;
var next_char = "decrypt_helper('" + text + "'," + max + "," + delay + "," +
new_char + "," + max + ");"
if(runs_left> 0){
setTimeout(rerun, delay);
}
else{
if (charvar < text.length){
setTimeout(next_char, Math.round(delay*(charvar+3)/(charvar+1)));
}
else
{
done = 1;
}
}
}
}
if (document.all||document.getElementById)
statusIn(thetitle)
</script>
Si tratta di un codice per lo più non modificabile, dove l'unico punto da personalizzare è la riga:
var data="0123456789";
alla quale è possibile sostituire altre lettere per un differente effetto di decript.