Probleme JS après rechargement page parent.
Publié : 26 janv. 2009, 18:47
Bonjour à tous,
Je poste pour la première fois sur ce forum suite à un problème épineux que je rencontre actuellement.
Je développe une application professionnelle utililisant plusieurs fenêtres pour une plus grande liberté d'action des utilisateurs. Ces fenêtres sont généralement ouvertes via JS par un window.open.
Je rencontre le souci suivant :
Dans la dernière fenetre ouverte, l'utilisateur doit remplir un formulaire comportant trois zones select consécutives. A chaque événement onClick sur l'une des zones, je passe le formulaire en POST pour mettre la donnée saisie en session via PHP. Jusque là tout se passe bien.
Lorsque l'utilisateur a correctement utilisé les 3 zones, il doit cliquer sur un bouton Sauver qui va soumettre à nouveau le formulaire avec une variable cachée HIDDEN qui servira à indiquer à PHP qu'il faut utiliser une fonction PHP d'enregistrement vers une base mySQL. Là encore tout se passe bien.
Une fois l'enregistrement effectué, j'affiche dans la dernière fenêtre un message d'information : "Matériel correctement enregistré" puis à l'aide d'un SetTimeOut de 3s, je renvoie l'utilisateur au début du formulaire pour s'il désire enregistrer un nouveau matériel. Parallèlement, je rafraichis la fenetre ouvrante ( opener ) via JS. Le code exact est le suivant :
var CurrCount = 0;
setTimeout('Redirect()',1000);
function Redirect() {
CurrCount++;
if (CurrCount >= 2){
self.location.href='mapage.php?PHPSESSID=mon_id_session&op=une_fonction';
opener.location.href='mon_autre_page.php?PHPSESSID=mon_id_session&op=mon_autre_fonction';
} else {
setTimeout('Redirect()',1000);
}
}
Les deux pages sont correctement actualisées par JS. La page opener est mise à jour et la page utile retrouve le formulaire vide non encore rempli pour saisir un nouveau matériel.
Le problème survient alors : dans la dernière page ouverte, celle ou on sélectionne le matériel à l'aide des 3 zones select, si on ouvre l'une des listes, il devient impossible de cliquer sur un élément. La liste s'ouvre bien mais plus aucun évènement ne se produit dedans. J'ai testé au niveau de JS et l'évenement onClick ne se déclenche plus. La liste reste ouverte et même les touches clavier semblent inopérantes.
Si on ferme la fenetre en question et qu'on la rouvre via la fenetre opener ( comme la toute première fois ), alors les listes reprennent leur comportement normal.
J'espère avoir été assez clair et suis curieux de savoir si quelqu'un a une piste de recherche car actuellement je n'ai trouvé aucune solution à ce bug ( si c'en est un ).
D'avance merci pour vos conseils.
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5
Je poste pour la première fois sur ce forum suite à un problème épineux que je rencontre actuellement.
Je développe une application professionnelle utililisant plusieurs fenêtres pour une plus grande liberté d'action des utilisateurs. Ces fenêtres sont généralement ouvertes via JS par un window.open.
Je rencontre le souci suivant :
Dans la dernière fenetre ouverte, l'utilisateur doit remplir un formulaire comportant trois zones select consécutives. A chaque événement onClick sur l'une des zones, je passe le formulaire en POST pour mettre la donnée saisie en session via PHP. Jusque là tout se passe bien.
Lorsque l'utilisateur a correctement utilisé les 3 zones, il doit cliquer sur un bouton Sauver qui va soumettre à nouveau le formulaire avec une variable cachée HIDDEN qui servira à indiquer à PHP qu'il faut utiliser une fonction PHP d'enregistrement vers une base mySQL. Là encore tout se passe bien.
Une fois l'enregistrement effectué, j'affiche dans la dernière fenêtre un message d'information : "Matériel correctement enregistré" puis à l'aide d'un SetTimeOut de 3s, je renvoie l'utilisateur au début du formulaire pour s'il désire enregistrer un nouveau matériel. Parallèlement, je rafraichis la fenetre ouvrante ( opener ) via JS. Le code exact est le suivant :
var CurrCount = 0;
setTimeout('Redirect()',1000);
function Redirect() {
CurrCount++;
if (CurrCount >= 2){
self.location.href='mapage.php?PHPSESSID=mon_id_session&op=une_fonction';
opener.location.href='mon_autre_page.php?PHPSESSID=mon_id_session&op=mon_autre_fonction';
} else {
setTimeout('Redirect()',1000);
}
}
Les deux pages sont correctement actualisées par JS. La page opener est mise à jour et la page utile retrouve le formulaire vide non encore rempli pour saisir un nouveau matériel.
Le problème survient alors : dans la dernière page ouverte, celle ou on sélectionne le matériel à l'aide des 3 zones select, si on ouvre l'une des listes, il devient impossible de cliquer sur un élément. La liste s'ouvre bien mais plus aucun évènement ne se produit dedans. J'ai testé au niveau de JS et l'évenement onClick ne se déclenche plus. La liste reste ouverte et même les touches clavier semblent inopérantes.
Si on ferme la fenetre en question et qu'on la rouvre via la fenetre opener ( comme la toute première fois ), alors les listes reprennent leur comportement normal.
J'espère avoir été assez clair et suis curieux de savoir si quelqu'un a une piste de recherche car actuellement je n'ai trouvé aucune solution à ce bug ( si c'en est un ).
D'avance merci pour vos conseils.
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5