J'ai déjà posé à peu près la même question dans fclj, mais comme
personne n'a su me répondre je la repose dans fciwa. Je mets quand même
le suivi vers fclj car je ne vois pas comment la solution pourrait être
autrement qu'en JavaScript (merci de changer le suivi si je m'étais trompé).
J'ai un script en JavaScript qui fait des tas de choses très longues
(je passe les détails) et qui de temps en temps rajoute des messages
pour faire patienter, au moyen de la fonction appendChild() du Document
Object Model (DOM).
Cela fonctionne très bien avec Internet Explorer qui affiche aussitôt
tout ce que je lui demande, mais pas avec Netscape 7 : celui-ci attend
que tous les traitements soient terminés avant d'afficher d'un seul coup
les différents messages d'attente. Avouez que ce n'est pas très utile
d'attendre une minute devant un écran vide, avant de voir s'afficher en
une fraction de seconde : « patientez une minute - patientez 50 secondes
- patientez 40 secondes - patientez 30 secondes - plus que 20 secondes -
j'y suis presque - c'est fini ! »
Alors voilà, je voudrais savoir s'il y a un moyen pour forcer le
navigateur à afficher les messages de progression au fur et à mesure
au lieu de tout faire d'un coup.
Alors voilà, je voudrais savoir s'il y a un moyen pour forcer le navigateur à afficher les messages de progression au fur et à mesure au lieu de tout faire d'un coup.
M'enfin ! ça m'étone ce truc là
Que te dire ? si on n'a que tes dires ...
N'y aurait-y pas un p'tit exemple (épuré des trucs ne nous concernant pas) ?
-- ******************************************************* Stéphane MORIAUX et son vieux Mac Aide Pages Perso (images & couleurs, formulaire, CHP) http://perso.wanadoo.fr/stephane.moriaux/internet/ *******************************************************
Alors voilà, je voudrais savoir s'il y a un moyen pour forcer le
navigateur à afficher les messages de progression au fur et à mesure
au lieu de tout faire d'un coup.
M'enfin ! ça m'étone ce truc là
Que te dire ?
si on n'a que tes dires ...
N'y aurait-y pas un p'tit exemple (épuré des trucs ne nous concernant pas) ?
--
*******************************************************
Stéphane MORIAUX et son vieux Mac
Aide Pages Perso (images & couleurs, formulaire, CHP)
http://perso.wanadoo.fr/stephane.moriaux/internet/
*******************************************************
Alors voilà, je voudrais savoir s'il y a un moyen pour forcer le navigateur à afficher les messages de progression au fur et à mesure au lieu de tout faire d'un coup.
M'enfin ! ça m'étone ce truc là
Que te dire ? si on n'a que tes dires ...
N'y aurait-y pas un p'tit exemple (épuré des trucs ne nous concernant pas) ?
-- ******************************************************* Stéphane MORIAUX et son vieux Mac Aide Pages Perso (images & couleurs, formulaire, CHP) http://perso.wanadoo.fr/stephane.moriaux/internet/ *******************************************************
Hervé Cauwelier
Cela fonctionne très bien avec Internet Explorer qui affiche aussitôt tout ce que je lui demande, mais pas avec Netscape 7 : celui-ci attend que tous les traitements soient terminés avant d'afficher d'un seul coup les différents messages d'attente.
C'est aussi le cas avec Mozilla (Firefox itou ?) ? Car je sais qu'il attend que la page soit entièrement chargée avant d'exécuter le JS. C'est très chiant quand une bannière de pub bloque le chargement parce que le serveur de la régie ne répond plus...
(Je ne suis pas fclj.)
-- Hervé Cauwelier
http://www.oursours.net/
Cela fonctionne très bien avec Internet Explorer qui affiche aussitôt
tout ce que je lui demande, mais pas avec Netscape 7 : celui-ci attend
que tous les traitements soient terminés avant d'afficher d'un seul coup
les différents messages d'attente.
C'est aussi le cas avec Mozilla (Firefox itou ?) ? Car je sais qu'il
attend que la page soit entièrement chargée avant d'exécuter le JS.
C'est très chiant quand une bannière de pub bloque le chargement parce
que le serveur de la régie ne répond plus...
Cela fonctionne très bien avec Internet Explorer qui affiche aussitôt tout ce que je lui demande, mais pas avec Netscape 7 : celui-ci attend que tous les traitements soient terminés avant d'afficher d'un seul coup les différents messages d'attente.
C'est aussi le cas avec Mozilla (Firefox itou ?) ? Car je sais qu'il attend que la page soit entièrement chargée avant d'exécuter le JS. C'est très chiant quand une bannière de pub bloque le chargement parce que le serveur de la régie ne répond plus...
(Je ne suis pas fclj.)
-- Hervé Cauwelier
http://www.oursours.net/
Thibaut Allender
C'est aussi le cas avec Mozilla (Firefox itou ?) ? Car je sais qu'il attend que la page soit entièrement chargée avant d'exécuter le JS. C'est très chiant quand une bannière de pub bloque le chargement parce que le serveur de la régie ne répond plus...
ceci explique donc cela ! j'avais effectivement deja constaté ce genre de problème (résolu avec adblock, ceci dit ;)
mais qu'il attende que la page soit chargée avant d'executer le JS n'est pas plus mal non ? si le JS appelle un element tout en bas de la page, par exemple.
C'est aussi le cas avec Mozilla (Firefox itou ?) ? Car je sais qu'il
attend que la page soit entièrement chargée avant d'exécuter le JS.
C'est très chiant quand une bannière de pub bloque le chargement parce
que le serveur de la régie ne répond plus...
ceci explique donc cela !
j'avais effectivement deja constaté ce genre de problème (résolu avec
adblock, ceci dit ;)
mais qu'il attende que la page soit chargée avant d'executer le JS n'est
pas plus mal non ?
si le JS appelle un element tout en bas de la page, par exemple.
C'est aussi le cas avec Mozilla (Firefox itou ?) ? Car je sais qu'il attend que la page soit entièrement chargée avant d'exécuter le JS. C'est très chiant quand une bannière de pub bloque le chargement parce que le serveur de la régie ne répond plus...
ceci explique donc cela ! j'avais effectivement deja constaté ce genre de problème (résolu avec adblock, ceci dit ;)
mais qu'il attende que la page soit chargée avant d'executer le JS n'est pas plus mal non ? si le JS appelle un element tout en bas de la page, par exemple.
[...] J'ai un script en JavaScript qui fait des tas de choses très longues (je passe les détails) et qui de temps en temps rajoute des messages pour faire patienter, au moyen de la fonction appendChild() du Document Object Model (DOM).
Cela fonctionne très bien avec Internet Explorer qui affiche aussitôt tout ce que je lui demande, mais pas avec Netscape 7 : celui-ci attend que tous les traitements soient terminés avant d'afficher d'un seul coup les différents messages d'attente. Avouez que ce n'est pas très utile d'attendre une minute devant un écran vide, avant de voir s'afficher en une fraction de seconde : « patientez une minute - patientez 50 secondes - patientez 40 secondes - patientez 30 secondes - plus que 20 secondes - j'y suis presque - c'est fini ! »
Alors voilà, je voudrais savoir s'il y a un moyen pour forcer le navigateur à afficher les messages de progression au fur et à mesure au lieu de tout faire d'un coup.
Le comportement "normal" pour le navigateur est d'attendre que le script rende la main pour effectuer le rafraîchissement de l'affichage. Peut-être que dans ton cas le fait que le script appelle une applet Java est interprété comme une pause par IE qui en profite pour actualiser l'affichage ?
Une solution possible serait de saucissonner le script en ses différentes étapes, d'utiliser éventuellement des variables globales (pour la variable the_applet par ex.) et de ruser avec des setTimeout(). Pour reprendre un de tes articles précédents sur ce sujet (en y ajoutant l'affichage des messages) :
pourrait devenir, l'appel se faisant soit sans changement en écrivant lafonction() ou alors lafonction(0) (au choix) :
function lafonction(etape){ if(arguments.length = 0) etape=0; //1er appel effectué sans arguments ! switch(etape){ case 0: affiche(msg1); setTimeout("lafonction(" + ++etape +")",20); break; case 1: the_applet.DeleteKeyPair(label,id); affiche(msg2); setTimeout("lafonction(" + ++etape +")",20); break; case 2: the_applet.GenerateKeyPair("RSA",1024); affiche(msg3); setTimeout("lafonction(" + ++etape +")",20); break; //etc. } //fin du switch case }
La pause de 20 ms entre les différentes étapes devrait permettre au navigateur de rafraîchir l'affichage, le script se terminant alors avant de se relancer pour l'étape suivante.
HTH
-- Y.D.
[...] J'ai un script en JavaScript qui fait des tas de choses très longues
(je passe les détails) et qui de temps en temps rajoute des messages
pour faire patienter, au moyen de la fonction appendChild() du Document
Object Model (DOM).
Cela fonctionne très bien avec Internet Explorer qui affiche aussitôt
tout ce que je lui demande, mais pas avec Netscape 7 : celui-ci attend
que tous les traitements soient terminés avant d'afficher d'un seul coup
les différents messages d'attente. Avouez que ce n'est pas très utile
d'attendre une minute devant un écran vide, avant de voir s'afficher en
une fraction de seconde : « patientez une minute - patientez 50 secondes
- patientez 40 secondes - patientez 30 secondes - plus que 20 secondes -
j'y suis presque - c'est fini ! »
Alors voilà, je voudrais savoir s'il y a un moyen pour forcer le
navigateur à afficher les messages de progression au fur et à mesure
au lieu de tout faire d'un coup.
Le comportement "normal" pour le navigateur est d'attendre que le script
rende la main pour effectuer le rafraîchissement de l'affichage. Peut-être
que dans ton cas le fait que le script appelle une applet Java est
interprété comme une pause par IE qui en profite pour actualiser l'affichage ?
Une solution possible serait de saucissonner le script en ses différentes
étapes, d'utiliser éventuellement des variables globales (pour la variable
the_applet par ex.) et de ruser avec des setTimeout(). Pour reprendre un de
tes articles précédents sur ce sujet (en y ajoutant l'affichage des messages) :
pourrait devenir, l'appel se faisant soit sans changement en écrivant lafonction()
ou alors lafonction(0) (au choix) :
function lafonction(etape){
if(arguments.length = 0)
etape=0; //1er appel effectué sans arguments !
switch(etape){
case 0:
affiche(msg1);
setTimeout("lafonction(" + ++etape +")",20);
break;
case 1:
the_applet.DeleteKeyPair(label,id);
affiche(msg2);
setTimeout("lafonction(" + ++etape +")",20);
break;
case 2:
the_applet.GenerateKeyPair("RSA",1024);
affiche(msg3);
setTimeout("lafonction(" + ++etape +")",20);
break;
//etc.
} //fin du switch case
}
La pause de 20 ms entre les différentes étapes devrait permettre au navigateur de
rafraîchir l'affichage, le script se terminant alors avant de se relancer pour
l'étape suivante.
[...] J'ai un script en JavaScript qui fait des tas de choses très longues (je passe les détails) et qui de temps en temps rajoute des messages pour faire patienter, au moyen de la fonction appendChild() du Document Object Model (DOM).
Cela fonctionne très bien avec Internet Explorer qui affiche aussitôt tout ce que je lui demande, mais pas avec Netscape 7 : celui-ci attend que tous les traitements soient terminés avant d'afficher d'un seul coup les différents messages d'attente. Avouez que ce n'est pas très utile d'attendre une minute devant un écran vide, avant de voir s'afficher en une fraction de seconde : « patientez une minute - patientez 50 secondes - patientez 40 secondes - patientez 30 secondes - plus que 20 secondes - j'y suis presque - c'est fini ! »
Alors voilà, je voudrais savoir s'il y a un moyen pour forcer le navigateur à afficher les messages de progression au fur et à mesure au lieu de tout faire d'un coup.
Le comportement "normal" pour le navigateur est d'attendre que le script rende la main pour effectuer le rafraîchissement de l'affichage. Peut-être que dans ton cas le fait que le script appelle une applet Java est interprété comme une pause par IE qui en profite pour actualiser l'affichage ?
Une solution possible serait de saucissonner le script en ses différentes étapes, d'utiliser éventuellement des variables globales (pour la variable the_applet par ex.) et de ruser avec des setTimeout(). Pour reprendre un de tes articles précédents sur ce sujet (en y ajoutant l'affichage des messages) :
pourrait devenir, l'appel se faisant soit sans changement en écrivant lafonction() ou alors lafonction(0) (au choix) :
function lafonction(etape){ if(arguments.length = 0) etape=0; //1er appel effectué sans arguments ! switch(etape){ case 0: affiche(msg1); setTimeout("lafonction(" + ++etape +")",20); break; case 1: the_applet.DeleteKeyPair(label,id); affiche(msg2); setTimeout("lafonction(" + ++etape +")",20); break; case 2: the_applet.GenerateKeyPair("RSA",1024); affiche(msg3); setTimeout("lafonction(" + ++etape +")",20); break; //etc. } //fin du switch case }
La pause de 20 ms entre les différentes étapes devrait permettre au navigateur de rafraîchir l'affichage, le script se terminant alors avant de se relancer pour l'étape suivante.
HTH
-- Y.D.
Olivier Miakinen
mais qu'il attende que la page soit chargée avant d'executer le JS n'est pas plus mal non ? si le JS appelle un element tout en bas de la page, par exemple.
Oui. Mais je n'avais pas dû être très clair : la page est complètement chargée avant que j'appelle le JavaScript sur évènement « onload ». Cela dit, l'explication que donne YD est convaincante, et sa solution me semble prometteuse. Je vais essayer dès que possible.
mais qu'il attende que la page soit chargée avant d'executer le JS n'est
pas plus mal non ?
si le JS appelle un element tout en bas de la page, par exemple.
Oui. Mais je n'avais pas dû être très clair : la page est complètement
chargée avant que j'appelle le JavaScript sur évènement « onload ». Cela
dit, l'explication que donne YD est convaincante, et sa solution me
semble prometteuse. Je vais essayer dès que possible.
mais qu'il attende que la page soit chargée avant d'executer le JS n'est pas plus mal non ? si le JS appelle un element tout en bas de la page, par exemple.
Oui. Mais je n'avais pas dû être très clair : la page est complètement chargée avant que j'appelle le JavaScript sur évènement « onload ». Cela dit, l'explication que donne YD est convaincante, et sa solution me semble prometteuse. Je vais essayer dès que possible.
Olivier Miakinen
Le comportement "normal" pour le navigateur est d'attendre que le script rende la main pour effectuer le rafraîchissement de l'affichage. Peut-être que dans ton cas le fait que le script appelle une applet Java est interprété comme une pause par IE qui en profite pour actualiser l'affichage ?
Déjà, ça me rassure quelque part que ce soit IE qui soit bugué et pas Netscape 7 ou Firefox : quitte à faire des contournements de bugs, je préfère qu'ils concernent un seul navigateur.
Une solution possible serait [...] de ruser avec des setTimeout().
[exemple]
La pause de 20 ms entre les différentes étapes devrait permettre au navigateur de rafraîchir l'affichage, le script se terminant alors avant de se relancer pour l'étape suivante.
Ça me semble excellent ! J'essaye demain, dès que possible, et je reviens pour dire si ça marche.
Le comportement "normal" pour le navigateur est d'attendre que le script
rende la main pour effectuer le rafraîchissement de l'affichage. Peut-être
que dans ton cas le fait que le script appelle une applet Java est
interprété comme une pause par IE qui en profite pour actualiser l'affichage ?
Déjà, ça me rassure quelque part que ce soit IE qui soit bugué et pas
Netscape 7 ou Firefox : quitte à faire des contournements de bugs, je
préfère qu'ils concernent un seul navigateur.
Une solution possible serait [...] de ruser avec des setTimeout().
[exemple]
La pause de 20 ms entre les différentes étapes devrait permettre au navigateur de
rafraîchir l'affichage, le script se terminant alors avant de se relancer pour
l'étape suivante.
Ça me semble excellent ! J'essaye demain, dès que possible, et je
reviens pour dire si ça marche.
Le comportement "normal" pour le navigateur est d'attendre que le script rende la main pour effectuer le rafraîchissement de l'affichage. Peut-être que dans ton cas le fait que le script appelle une applet Java est interprété comme une pause par IE qui en profite pour actualiser l'affichage ?
Déjà, ça me rassure quelque part que ce soit IE qui soit bugué et pas Netscape 7 ou Firefox : quitte à faire des contournements de bugs, je préfère qu'ils concernent un seul navigateur.
Une solution possible serait [...] de ruser avec des setTimeout().
[exemple]
La pause de 20 ms entre les différentes étapes devrait permettre au navigateur de rafraîchir l'affichage, le script se terminant alors avant de se relancer pour l'étape suivante.
Ça me semble excellent ! J'essaye demain, dès que possible, et je reviens pour dire si ça marche.
YD
Ça me semble excellent ! J'essaye demain, dès que possible, et je reviens pour dire si ça marche.
Un petit feedback ?
-- Y.D.
Ça me semble excellent ! J'essaye demain, dès que possible, et je
reviens pour dire si ça marche.
Ça me semble excellent ! J'essaye demain, dès que possible, et je reviens pour dire si ça marche.
Un petit feedback ?
-- Y.D.
Olivier Miakinen
[timeout pour permettre le rafraîchissement de l'affichage ]
Ça me semble excellent ! J'essaye demain, dès que possible, et je reviens pour dire si ça marche.
Un petit feedback ?
Je promets de le faire dès que j'aurai essayé, malheureusement ce n'est pas encore le cas. J'essaye de gérer au mieux les différentes priorités, et cette tâche s'est retrouvée un peu moins prioritaire que d'autres.
Peut-être la semaine prochaine (je travaillerai trois jours), sinon la première semaine de janvier.
-- Olivier Miakinen Non, monsieur le juge, je vous le jure : jamais je n'ai cité Bruxelles dans ma signature.
[timeout pour permettre le rafraîchissement de l'affichage ]
Ça me semble excellent ! J'essaye demain, dès que possible, et je
reviens pour dire si ça marche.
Un petit feedback ?
Je promets de le faire dès que j'aurai essayé, malheureusement ce n'est
pas encore le cas. J'essaye de gérer au mieux les différentes priorités,
et cette tâche s'est retrouvée un peu moins prioritaire que d'autres.
Peut-être la semaine prochaine (je travaillerai trois jours), sinon la
première semaine de janvier.
--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.
[timeout pour permettre le rafraîchissement de l'affichage ]
Ça me semble excellent ! J'essaye demain, dès que possible, et je reviens pour dire si ça marche.
Un petit feedback ?
Je promets de le faire dès que j'aurai essayé, malheureusement ce n'est pas encore le cas. J'essaye de gérer au mieux les différentes priorités, et cette tâche s'est retrouvée un peu moins prioritaire que d'autres.
Peut-être la semaine prochaine (je travaillerai trois jours), sinon la première semaine de janvier.
-- Olivier Miakinen Non, monsieur le juge, je vous le jure : jamais je n'ai cité Bruxelles dans ma signature.
Olivier Miakinen
Une solution possible serait de saucissonner le script en ses différentes étapes, d'utiliser éventuellement des variables globales (pour la variable the_applet par ex.) et de ruser avec des setTimeout(). [...]
switch(etape){ case 0: affiche(msg1); setTimeout("lafonction(" + ++etape +")",20); break;
Modulo des « window.setTimeout() » au lieu de « setTimeout() », cela marche finement. Un grand merci pour ce cadeau de Noël !
-- Olivier Miakinen Non, monsieur le juge, je vous le jure : jamais je n'ai cité Bruxelles dans ma signature.
Une solution possible serait de saucissonner le script en ses différentes
étapes, d'utiliser éventuellement des variables globales (pour la variable
the_applet par ex.) et de ruser avec des setTimeout(). [...]
switch(etape){
case 0:
affiche(msg1);
setTimeout("lafonction(" + ++etape +")",20);
break;
Modulo des « window.setTimeout() » au lieu de « setTimeout() », cela
marche finement. Un grand merci pour ce cadeau de Noël !
--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.
Une solution possible serait de saucissonner le script en ses différentes étapes, d'utiliser éventuellement des variables globales (pour la variable the_applet par ex.) et de ruser avec des setTimeout(). [...]
switch(etape){ case 0: affiche(msg1); setTimeout("lafonction(" + ++etape +")",20); break;
Modulo des « window.setTimeout() » au lieu de « setTimeout() », cela marche finement. Un grand merci pour ce cadeau de Noël !
-- Olivier Miakinen Non, monsieur le juge, je vous le jure : jamais je n'ai cité Bruxelles dans ma signature.
YD
Une solution possible serait de saucissonner le script en ses différentes étapes, d'utiliser éventuellement des variables globales (pour la variable the_applet par ex.) et de ruser avec des setTimeout(). [...]
switch(etape){ case 0: affiche(msg1); setTimeout("lafonction(" + ++etape +")",20); break;
Modulo des « window.setTimeout() » au lieu de « setTimeout() »,
Ah ? Il me semble que window n'est quasiment jamais obligatoire car il correspond à l'objet Global dans le navigateur et est donc sous-entendu.
cela marche finement. Un grand merci pour ce cadeau de Noël !
De rien ! Et merci d'avoir donné le résultat.
-- Y.D.
Une solution possible serait de saucissonner le script en ses différentes
étapes, d'utiliser éventuellement des variables globales (pour la variable
the_applet par ex.) et de ruser avec des setTimeout(). [...]
switch(etape){
case 0:
affiche(msg1);
setTimeout("lafonction(" + ++etape +")",20);
break;
Modulo des « window.setTimeout() » au lieu de « setTimeout() »,
Ah ? Il me semble que window n'est quasiment jamais obligatoire car
il correspond à l'objet Global dans le navigateur et est donc sous-entendu.
cela
marche finement. Un grand merci pour ce cadeau de Noël !
Une solution possible serait de saucissonner le script en ses différentes étapes, d'utiliser éventuellement des variables globales (pour la variable the_applet par ex.) et de ruser avec des setTimeout(). [...]
switch(etape){ case 0: affiche(msg1); setTimeout("lafonction(" + ++etape +")",20); break;
Modulo des « window.setTimeout() » au lieu de « setTimeout() »,
Ah ? Il me semble que window n'est quasiment jamais obligatoire car il correspond à l'objet Global dans le navigateur et est donc sous-entendu.
cela marche finement. Un grand merci pour ce cadeau de Noël !