Probleme JS après rechargement page parent.
Probleme JS après rechargement page parent.
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
Re: Probleme JS après rechargement page parent.
Attention aux personnes qui utilisent le clavier...Monococo a écrit :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.
http://www.w3.org/TR/WCAG20/#keyboard-operation
Pour le reste je n'ai pas franchement de réponse.
Salut,
Que se passe-t-il si dans ta popup, au moment où tu mets "matériel bien enregistré", tu mets juste un lien vers ton petit formulaire ? (genre "saisir un nouveau matériel")
Donc sans rafraichir par JS ?
(ceci pour essayer de cerner à quel moment ça foire)
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9) Gecko/2008052906 Firefox/3.0
Que se passe-t-il si dans ta popup, au moment où tu mets "matériel bien enregistré", tu mets juste un lien vers ton petit formulaire ? (genre "saisir un nouveau matériel")
Donc sans rafraichir par JS ?
(ceci pour essayer de cerner à quel moment ça foire)
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9) Gecko/2008052906 Firefox/3.0
Voir ma configuration
Probleme JS après rechargement page parent.
Bonjour et merci pour vos réponses
Après enregistrement, je me sers d'un settimeout de 3s avant de rediriger l'utilisateur vers le formulaire remis à zéro, donc pas de lien...
Voir code JS ci dessus, tout y est.
Encore merci pour vos pistes de recherche...
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5
Après enregistrement, je me sers d'un settimeout de 3s avant de rediriger l'utilisateur vers le formulaire remis à zéro, donc pas de lien...
Voir code JS ci dessus, tout y est.
Encore merci pour vos pistes de recherche...
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5
Oui, j'avais compris.
Je te demandais d'essayer avec une autre méthode pour cibler un peu l'origine du problème...
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9) Gecko/2008052906 Firefox/3.0
Je te demandais d'essayer avec une autre méthode pour cibler un peu l'origine du problème...
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9) Gecko/2008052906 Firefox/3.0
Voir ma configuration
Je ne suis pas sûr de ce que peut contenir window.opener dans la popup APRES le rafraichissement des 2 window :s, le problème vient peut être de là, vérifie sa valeur.
Qu'indique la console d'erreur (JavaScript) de Firefox ? Et il vaut mieux la régler sur strict.
Qu'indique la console d'erreur (JavaScript) de Firefox ? Et il vaut mieux la régler sur strict.
Qui est en ligne ?
Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 4 invités