Bonjour,
Je développe actuellement une application php/ajax et je rencontre un petit problème avec firefox qui ne se pose pas avec IE (pour une fois que ce n'est pas l'inverse...)
A partir d'une fenêtre mère, j'ouvre une popup fille contenant un calendrier. La variable global_popup est là pour stocker la popup (vérifier qu'il n'y en aura qu'une, et permettre de la fermer plus tard ...)
Dans la popup, je sélectionne des dates et lance un submit. Ce submit lance du php qui va modifier la base de donnée, puis recharge la popup. Dans le onLoad de la popup, j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 var win = window.open(url, "popup_date", "height=" + hauteur + ",width=" + largeur + ",top=" + top + ",left=" + left + ",menubar=0,resizable=0,scrollbars=0,status=0,toolbar=0"); win.focus(); global_popup = win;
et ma fonction recharge_Lieux recharge une partie de ma page principale (ParentWindow) et à la fin :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 var ParentWindow = (opener?opener:parent); <? if ((isset($action))&&($action=='sauver')) {?> ParentWindow.global_appel_depuis_cal = true; <?= 'ParentWindow.rechargeLieux('.$id_info_pere.', \''.$comnumcom.'\', '.$id_info.');';?> <?} ?>
(global_appel_depuis_cal est là pour voir d'où la fonction a été appellée, car elle peut aussi ne pas déclencher la fermeture de la popup ...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 if((global_appel_depuis_cal == true)&&(global_popup.closed == false)){ window.top.focus(); window.global_popup.close(); global_appel_depuis_cal = false; return true; }
Tout cela marche fort bien, la popup est bien fermée sous IE. Sous Firefox aussi, sauf qu'elle ne se ferme que lorsqu'on bouge la souris dans la popup ! D'ailleurs, le focus sur la fenêtre parente ne se fait pas non plus. Ce qui pourrait se réveler assez génant pour un utilisateur un peu impatient...
J'ai dans l'idée qu'il s'agit d'un conflit d'évenements, mais je ne vois pas trop où. (On utilise scriptaculous-prototype pour l'Ajax, je dois vous avouer que je ne suis pas une experte en la matière )
Auriez-vous une lumineuse idée ? Merci.
Il est à noter que je ne fais pas un window.close() dans le popup directement car cela fait planter le recharge_Lieux, sans doute à cause d'un conflit aussi... Et que la console JS de Firefox ne me donne aucune erreur.
Partager