sur certaines pages, j'efface le contenu d'un <pre />, ligne après ligne
(comptage des "\n") avec une temporisation (feedback utilisateur sinon
ça va trop vite est on a l'impression que rien n'a changé)
et j'aimerais lancer qqc quand c'est fini.
j'ai essayé avec window.setTimeout, sans succès, firefox me donne une
erreur de syntaxe, c'est aprox. :
function execAfter(condition,action,param,count){
if(condition||count>20){
action(param);
} else {
count++;
window.setTimeout("execAfter("+condition+","+action+","+param+","+count+
")",100);
}
}
firefox me dit que la syntaxe est incorrecte, ça vient sans doute de
l'argument 'action' qui est une fonction ?
donc, question : est-il possible de passer en paramètre une function
dans un setTimeout ?
je tiens à passer cette function par variable car ça me permettrait
d'avoir une function "execAfter" générique...
euh, bien sûr "condition" varie au cours du temps, je veux dire
généralement quand je lance "execAfter" condition est à false et passe
ensuite à true...
pour être + précis, je voudrais généraliser, paramétriser, cette
fonction, qui, elle 'marche' :
function wipe(){
// décomposition du contenu de <pre /> en lignes :
var lines=log.innerHTML.split("\n");//alert(lines.length);
// si plus d'une ligne, on continue à effacer :
if(lines.length>1){
wipe_ended=false;
lines.pop(); // on vire la dernière ligne
log.innerHTML=''; // effacement de tout le <pre />
// ré-écriture du <pre /> dernière ligne en moins :
log.appendChild(document.createTextNode(lines.join("\n")));
// temporisation pour feedback utilisateur :
window.setTimeout("wipe()",100);
} else {
// plus rien à effacer dans le <pre />
wipe_ended=true;
// on peut donc réécrire qqc de nouveau (ou identique) dans le <pre
/>
log.appendChild(document.createTextNode(reportText));
}
}
--
Une Bévue