Programmation HTML

pierre -  
zangre01 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -
Je suis en train de développer un site WEB (HTML) qui fait appel à des sous-routine sur des évenements de type onclick. L'une de mes fonction contient une boucle avec des conditions. Selon les conditions, j'aimerais modifier sur la page WEB des images. Le problème est que tant que la sous-routine n'est pas terminée, la page n'est pas modifiée et même elle n'est plus accessible (freeze).

Avez-vous une idée par pallier à ce problème ?
A voir également:

3 réponses

benkeeper Messages postés 81 Date d'inscription   Statut Membre Dernière intervention   45
 
J'essaierai peut être de découper la grosse boucle en plusieurs petites, mais c'est pas garanti que ça marche.

Les images ne sont misent à jour qu'à la fin de la boucle?
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Tu pourrais nous donner le code source JavaScript qu'on regarde ça un peu plus précisément ?
0
pierre
 
En fait, il s'agit d'une sous-routine en Perl (pour des questions de simplicité et de multi-environnements):
---------------------------------------------------------------------------
use Win32;
use Win32::PingICMP;

sub doRestart {
$TheForm = $_[0];
my $p = Win32::PingICMP->new();
for ($i = 0 ; $i < $TheForm->selection->length ; $i++) {
if (($TheForm->selection($i)->type eq "radio") && ($TheForm->selection($i)->checked)) {
if ($TheForm->selection($i)->value eq "all") {
for ($j = 1 ; $j < $TheForm->selection->length ; $j++) {
$application = $TheForm->selection($j)->value;
$server = $application."server"; $machine = $TheForm->$server->value;
if(Win32::InitiateSystemShutdown($TheForm->$server->value,"",0,1,1)) {
$t = 0;
do {
sleep(5);
$result = $p->ping($machine);
$t = $t + 1;
} until(($result == 0) || ($t == 40));
if($t != 40) {
$IMG = '../../images/stopped.gif';
$flag = "img".$application;
$TheForm->$flag->{src} = $IMG;
$t = 0;
do {
sleep(5);
$result = $p->ping($machine);
$t = $t + 1;
} until(($result == 1) && ($t == 40));
if($t != 40) {
$IMG = '../../images/started.gif';
$flag = "img".$application;
$TheForm->$flag->{src} = $IMG;
}
else {
alert("ERROR: Server cannot be restarted.");
}
}
else {
alert("ERROR: Server cannot be stopped.");
}
}
else {
alert("ERROR: Server cannot be stopped.");
}
}
}
else {
$application = $TheForm->selection($i)->value;
$server = $application."server"; $machine = $TheForm->$server->value;
if(Win32::InitiateSystemShutdown($TheForm->$server->value,"",0,1,1)) {
$t = 0;
do {
sleep(5);
$result = $p->ping($machine);
$t = $t + 1;
} until (($result == 0) || ($t == 40));
if($t != 40) {
$IMG = '../../images/stopped.gif';
$flag = "img".$application;
$TheForm->$flag->{src} = $IMG;
$t = 0;
do {
sleep(5);
$result = $p->ping($machine);
$t = $t + 1;
} until (($result == 1) || ($t == 40));
if($t != 40) {
$IMG = '../../images/started.gif';
$flag = "img".$application;
$TheForm->$flag->{src} = $IMG;
}
else {
alert("ERROR: Server cannot be restarted.");
}
}
else {
alert("ERROR: Server cannot be stopped.");
}
}
else {
alert("ERROR: Server cannot be stopped.");
}
}
last;
}
}
if ($i >= $TheForm->selection->length) {
alert("Please select a server to restart.");
}
}

sub doStop {
$TheForm = $_[0];
my $p = Win32::PingICMP->new();
for ($i = 0 ; $i < $TheForm->selection->length ; $i++) {
if (($TheForm->selection($i)->type eq "radio") && ($TheForm->selection($i)->checked)) {
if ($TheForm->selection($i)->value eq "all") {
for ($j = 1 ; $j < $TheForm->selection->length ; $j++) {
$application = $TheForm->selection($j)->value;
$server = $application."server"; $machine = $TheForm->$server->value;
if(Win32::InitiateSystemShutdown($TheForm->$server->value,"",0,1,0)) {
$t = 0;
do {
sleep(5);
$result = $p->ping($machine);
$t = $t + 1;
} until(($result == 0) && ($t == 40));
if($t != 40) {
$IMG = '../../images/stopped.gif';
$flag = "img".$application;
$TheForm->$flag->{src} = $IMG;
}
else {
alert("ERROR: Server cannot be stopped.");
}
}
else {
alert("ERROR: Server cannot be stopped.");
}
}
}
else {
$application = $TheForm->selection($i)->value;
$server = $application."server"; $machine = $TheForm->$server->value;
if(Win32::InitiateSystemShutdown($TheForm->$server->value,"",0,1,0)) {
$t = 0;
do {
sleep(5);
$result = $p->ping($machine);
$t = $t + 1;
} until(($result == 0) && ($t == 40));
if($t != 40) {
$IMG = '../../images/stopped.gif';
$flag = "img".$application;
$TheForm->$flag->{src} = $IMG;
}
else {
alert("ERROR: Server cannot be stopped.");
}
}
else {
alert("ERROR: Server cannot be stopped.");
}
}
last;
}
}
if ($i >= $TheForm->selection->length) {
alert("Please select a server to stop.");
}
}
0
zangre01 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   14 > pierre
 
BONJOUR PIERRE

Moi c'est zangre aboubacar , je suis un jeune africain et je suis lycéen ,je frequente et je fait l'enseignement general et je trouve que tu est beaucoup fort tu en connait assez en informatique tu l'ecole informatique ca me plait beaucoup ce domene j'ai meme envie par moment de devenir informaticien et je profite pour te demande quand on n'est iformaticien et que on fort dans la programmation quel metier peut faire dans l'avenir .
Je serais enchanter de faire ta connaissance moi je cherche un amis avec qui ont pourras toujour rester en contact et aussi qui va m'apprendre un peu desa connaissance comme le maitre et son eleve

ok merci
mon email: zangre.aboubacar@yahoo.fr
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Ah d'accord !
Mais dans ce cas, c'est normal que la page soit bloquée pendant son exécution : le pearl est exécuté du côté du serveur et pas chez le client !
Pour modifier la page elle-même, il n'y a pas vriament d'autres solutions que le javascript...
0
pierre
 
ok, merci pour ton aide.
0