OVH Cloud OVH Cloud

fonction wait()

30 réponses
Avatar
Cenekemoi
Bonjour à tous,

quelqu'un aurait-il une zolie fonction "wait" en javascript avec
l'utilisation de setTimeout() utilisable comme ceci :

<script>
...du code...
wait(500); //attente d'une demi-seconde
...suite du code...


function wait(milliSec) {
...un zoli code...
}
</script>

Merci d'avance !

--
Cordialement, Thierry ;-)

10 réponses

1 2 3
Avatar
Bob Marcel
Bonjour à tous,

quelqu'un aurait-il une zolie fonction "wait" en javascript avec
l'utilisation de setTimeout() utilisable comme ceci :


Une recherche google sur 'wait javascript' (toutes langues) te donnera
ce code au premier résultat. Je n'ose pas croire que tu as posté ici
sans meme faire cette recherche et que donc ce résultat ne correspond
pas à tes souhaits.

Avatar
Cenekemoi
Bonjour à Bob Marcel qui nous a
Bonjour à tous,

quelqu'un aurait-il une zolie fonction "wait" en javascript avec
l'utilisation de setTimeout() utilisable comme ceci :


Une recherche google sur 'wait javascript' (toutes langues) te donnera
ce code au premier résultat. Je n'ose pas croire que tu as posté ici
sans meme faire cette recherche et que donc ce résultat ne correspond
pas à tes souhaits.


Merci de ta confiance ! Tu a évidemment raison, j'ai -vainement- cherché
sur Google une fonction correspondant à mon désir.

Mais si tu lis bien mon message d'origine -ce dont personne ne doute-,
tu remarqueras que je précise "avec l'utilisation de setTimeout()" car
je ne veux/peux pas utiliser trop la cpu des machines sur lesquelles
tournera cette fonction.

J'espère avoir été assez clair cette fois-ci.

Sans rancune...

--
Cordialement, Thierry ;-)


Avatar
Olivier Miakinen

quelqu'un aurait-il une zolie fonction "wait" en javascript avec
l'utilisation de setTimeout() utilisable comme ceci :

<script>
...du code...
wait(500); //attente d'une demi-seconde
...suite du code...


function wait(milliSec) {
...un zoli code...
}
</script>


Puisque tu veux éviter une attente active consommatrice de cpu, ce
n'est tout simplement pas possible. En effet, quelle que soit la façon
d'écrire la fonction wait(), aussitôt qu'elle aura fini de positionner
le setTimeout() elle se terminera, ce qui exécutera la suite du code.

En fait, la seule façon de faire, c'est :

<script>
...du code...
setTimeout('suiteDuCode()',500);

function suiteDuCode()
{
...suite du code...
}
</script>



--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.

Avatar
YD

quelqu'un aurait-il une zolie fonction "wait" en javascript avec
l'utilisation de setTimeout() utilisable comme ceci :


Puisque tu veux éviter une attente active consommatrice de cpu [...]
la seule façon de faire, c'est :

<script>
....du code...
setTimeout('suiteDuCode()',500);

function suiteDuCode()
{
....suite du code...
}
</script>


Facile à implémenter s'il n'y a que des étapes (ça me dit quelque chose ;-) ),
mais si le wait() devait se trouver à l'intérieur d'un boucle for par ex.,
l'architecture complète de la boucle est à revoir : la scinder en deux fonctions
et inclure le test dans la première. La 1e se termine par un appel à la 2nde via
setTimeout qui appelle la 1e de la même façon...

Bref, Thierry donne-nous davantage de précisions sur le contexte d'utilisation
de ce wait() pour qu'on puisse être plus utile dans nos réponses.

Une remarque en passant, cette difficulté vient essentiellement de ce que le
timeout est géré par le navigateur et pas par javascript qui ne dispose pas
d'instructions pour gérer le temps... Oui, je sais, je
commence à radoter...

--
Y.D.


Avatar
loufoque
YD a dit le 27/05/2005 à 18:51:

Une remarque en passant, cette difficulté vient essentiellement de ce
que le
timeout est géré par le navigateur et pas par javascript qui ne dispose pas
d'instructions pour gérer le temps... Oui, je sais, je
commence à radoter...


Dans XPCOM, il doit y avoir une fonction sleep().

Avatar
Cenekemoi

quelqu'un aurait-il une zolie fonction "wait" en javascript avec
l'utilisation de setTimeout() utilisable comme ceci :


Puisque tu veux éviter une attente active consommatrice de cpu [...]
la seule façon de faire, c'est :

<script>
....du code...
setTimeout('suiteDuCode()',500);

function suiteDuCode()
{
....suite du code...
}
</script>


Facile à implémenter s'il n'y a que des étapes (ça me dit quelque
chose ;-) ), mais si le wait() devait se trouver à l'intérieur d'un
boucle for par ex., l'architecture complète de la boucle est à revoir
: la scinder en deux fonctions et inclure le test dans la première.
La 1e se termine par un appel à la 2nde via setTimeout qui appelle la
1e de la même façon...


Merci à tous les deux de m'avoir répondu. Vous ne faites, hélas, que
confirmer ce dont j'avais le très fort sentiment ! Dommage...


Bref, Thierry donne-nous davantage de précisions sur le contexte
d'utilisation de ce wait() pour qu'on puisse être plus utile dans nos
réponses.


Je pourrais mais cela n'a que peu d'intérêt. Ce que je désirais, c'était
de ne pas avoir à modifier l'algo sophistiqué existant ! On va donc
essayer de le découper intelligemment ;-)

--
Cordialement, Thierry



Avatar
Cenekemoi
Facile à implémenter s'il n'y a que des étapes (ça me dit quelque
chose ;-) ), mais si le wait() devait se trouver à l'intérieur d'un
boucle for par ex., l'architecture complète de la boucle est à revoir
: la scinder en deux fonctions et inclure le test dans la première.
La 1e se termine par un appel à la 2nde via setTimeout qui appelle la
1e de la même façon...
Bref, Thierry donne-nous davantage de précisions sur le contexte
d'utilisation de ce wait() pour qu'on puisse être plus utile dans nos
réponses.


Je vais simplifier mon problème et poser la question différemment :

Comment, en javascript, remplacer la fonction "prompt" ?

Mon besoin est, en effet, la saisie d'un identifiant ET d'un mot de
passe qui sont controlés online via xmlHttp, mais ça c'est une autre
histoire. S'il ne s'était agi que de l'identifiant à saisir, un "prompt"
javascript aurait répondu à mon attente ; mais je veux la saisie d'un
identifiant ET d'un mot de passe NON AFFICHé EN CLAIR, agrémenté d'un
commentaire. Là, le "prompt" ne suffit plus. Je sais donc faire un
win.open ou un div qui présente à l'utilisateur une popup Html contenant
mes éléments.

Comment, à ce moment, sans utiliser 100% de la cpu, attendre et
récupérer la réponse de l'utilisateur avec une fonction du type :

<script>
...blabla...

reponse = monBeauPrompt();

if (reponse == ...) ...

function monBeauPrompt() {
...
}
</script>

La solution -simple- consistant en deux "prompt" javascript, si elle
fonctionne, ne me satisfait pas vraiment...

--
Cordialement, Thierry ;-)

Avatar
ASM

Comment, en javascript, remplacer la fonction "prompt" ?

je veux la saisie d'un
identifiant ET d'un mot de passe NON AFFICHé EN CLAIR,


En quoi est-ce génant de taper en clair son mot de passe ?
de tte la manière il doit bien être transmis en clair au serveur, non ?
(j'espère qu'il n'est pas inclus dans le JS !)

le "prompt" ne suffit plus. Je sais donc faire un
une popup Html contenant mes éléments.

Comment, à ce moment, sans utiliser 100% de la cpu, attendre et


Pareil, en quoi est-ce génant d'utiliser de la cpu ?
n'est-ce point fait pour çà ?

alors par z'exemple :

script 1 = début de ton script
finit par ton prompt en html

le résultat de ton pop-up déclanche :
script 2 = fin de ton script (oui/non mauvais pw ...)

récupérer la réponse de l'utilisateur avec une fonction du type :


Ben ? çà semble tt à fait correspondre à mon exemple ! ?

ou bien c'est-y que tu ne sais pas récupérer la réponse ?


<html><script>
function monprompt(commentaire) {
commentaire='<html><title>Confirmation<'+'/title><h4>'+
commentaire+'<'+'/h4><form>'+
'<center>Entrez votre mot de passe : <input type=password><hr>'+
'<input type=button value="Refusé" '+
'onclick="opener.reception(false);'+
' self.close();">'+
'<input type=button value="Valider" default '+
'onclick="opener.reception(document.forms[0][0].value);'+
' self.close();">'+
'<'+'/center>'+'<'+'/form><'+'/html>';
jailli = window.open('','','width00,height 0,resizable=0');
with (jailli.document){open();write(commentaire);close();}
}
function reception(passe) {
if(!passe) alert('Bon !ntant pis :-(');
else faire_la_suite(passe);
}
function faire_la_suite(txt){alert(txt);}
</script>
<a href="javascript:monprompt('Continuer ?');">clic</a>
</html>

ou variante :

<html><script>var jailli;
function monprompt(commentaire) {
commentaire='<html><title>Confirmation<'+'/title><h4>'+
commentaire+'<'+'/h4><form '+
'onsubmit="opener.reception(document.forms[0][0].value);'+
' return false;">'+
'<center>Entrez votre mot de passe : <input type=password><hr>'+
'<input type=button value="Refusé" '+
'onclick="opener.reception(false);" '+
'style="margin:20px;background:#ffc">'+
'<input type=submit value="Valider" '+
'style="margin:20px;background:pink">'+
'<script>document.forms[0][0].focus();<'+'/script>'+
'<'+'/center>'+'<'+'/form><'+'/html>';
jailli = window.open('','','width00,height 0,resizable=0');
with (jailli.document){open();write(commentaire);close();}
}
function reception(passe) {
jailli.close();
if(!passe) alert('Bon !ntant pis :-(');
else faire_la_suite(passe);
}
function faire_la_suite(txt){alert('passe = '+txt);}
</script>
<a href="javascript:monprompt('Continuer ?');">clic</a>
</html>


--
*******************************************************
Stéphane MORIAUX et son vieux Mac
Aide Pages Perso (images & couleurs, formulaire, CHP)
http://perso.wanadoo.fr/stephane.moriaux/internet/
*******************************************************

Avatar
ASM
ASM a ecrit

[ ]

Scrogneugneu ! fallait 2 champs !

<html><script>var jailli;
function monprompt(commentaire) {
commentaire='<html><title>Confirmation<'+'/title><h4>'+
commentaire+'<'+'/h4><form '+
'onsubmit="opener.reception(x[1].value,x[0].value);'+
' return false;">'+
'<center>Entrez votre identifiant : <input type=texte><br>'+
'Entrez votre mot de passe : <input type=password><hr>'+
'<input type=button value="Refusé" '+
'onclick="opener.reception(false);" '+
'style="margin:20px;background:#ffc">'+
'<input type=submit value="Valider" '+
'style="margin:20px;background:pink">'+
'<script> x=document.forms[0];x[0].focus();<'+'/script>'+
'<'+'/center>'+'<'+'/form><'+'/html>';
jailli = window.open('','','width00,height 0,resizable=0');
with (jailli.document){open();write(commentaire);close();}
}
function reception(passe,identifiant) {
jailli.close();
if(!passe) alert('Bon !ntant pis :-(');
else faire_la_suite(passe,identifiant);
}
function faire_la_suite(pass,id){
id? alert('id = '+id+'npasse = '+pass) : alert('Pas de nom');
}
</script>
<a href="javascript:monprompt('Continuer ?');">clic</a>
</html>

--
*******************************************************
Stéphane MORIAUX et son vieux Mac
Aide Pages Perso (images & couleurs, formulaire, CHP)
http://perso.wanadoo.fr/stephane.moriaux/internet/
*******************************************************
Avatar
Cenekemoi
ASM a ecrit

[ ]

Scrogneugneu ! fallait 2 champs !

<html><script>var jailli;
function monprompt(commentaire) {
commentaire='<html><title>Confirmation<'+'/title><h4>'+
commentaire+'<'+'/h4><form '+
'onsubmit="opener.reception(x[1].value,x[0].value);'+
' return false;">'+
'<center>Entrez votre identifiant : <input type=texte><br>'+
'Entrez votre mot de passe : <input type=password><hr>'+
'<input type=button value="Refusé" '+
'onclick="opener.reception(false);" '+
'style="margin:20px;background:#ffc">'+
'<input type=submit value="Valider" '+
'style="margin:20px;background:pink">'+
'<script> x=document.forms[0];x[0].focus();<'+'/script>'+
'<'+'/center>'+'<'+'/form><'+'/html>';
jailli = window.open('','','width00,height 0,resizable=0');
with (jailli.document){open();write(commentaire);close();}
}
function reception(passe,identifiant) {
jailli.close();
if(!passe) alert('Bon !ntant pis :-(');
else faire_la_suite(passe,identifiant);
}
function faire_la_suite(pass,id){
id? alert('id = '+id+'npasse = '+pass) : alert('Pas de nom');
}
</script>
<a href="javascript:monprompt('Continuer ?');">clic</a>
</html>


Hélas, non, ça ne va pas !

Il suffit de rajouter "alert('ici');" juste après la ligne "with
(jailli.document){open();write(commentaire);close();}" pour s'en
convaincre !

Merci quand même...

--
Cordialement, Thierry ;-)

1 2 3