Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# [Résolu] Fermeture asynchrone de Dialog

Envoyé par : papy

Date : 02/04/2007 12:24

Bonjour,

j'ai des fenêtres de type dialog ouvertes de façon modale. Lors de la validation de ces fenêtres, j'exécute une requête asynchrone avec XMLHttpRequest. Du coup pour attendre le résultat je bloque la fermeture :

 <dialog ... ondialogaccept="mafonction(); return false;">

Et lorsque je reçois ma réponse, j'essai de fermer ma fenêtre :

 function handler() {
   ... //traitement de la réponse
   
   close(); //ou cancelDialog
 }

Mais ma fenêtre ne se ferme pas immédiatement, je dois dabord changer le focus (clic de souris, appui sur la touche tab etc...) et à ce moment la elle se ferme.

Est-ce que quelqu'un à une idée pour contourner ce petit problème plutôt génant ?

# Re: Fermeture asynchrone de Dialog

Envoyé par : Christophe Charron

Date : 02/04/2007 15:55

Bonjour, je ne pense pas que cela vienne du type de fenêtre. J'ai le même souci sur une procédure appelée en callback sur un XMLHttpRequest qui ferme la fenêtre. J'ai contourné en faisant une info du style "Votre élément a bien été ajouté." ce qui redonne le focus et permet donc de sortir, mais je suis sûr qu'on me le fera virer à cour terme et la je serai embêté !!! Donc c'est un contournement très très foireux !!

# Re: Fermeture asynchrone de Dialog

Envoyé par : papy

Date : 05/04/2007 11:53

Je suis en train de chercher à faire une procédure pour forcer la fermeture de la fenêtre mais rien n'y fait.

J'ai essayé de jouer avec focus() et blur() entre ma fenêtre modale et la fenêtre mère, de générer des évènements claviers (tab) ou souris (click), enfin tout les comportements qui ferme la fenêtre lorsqu'ils sont effectués par l'utilisateur, mais ca ne fonctionne pas.

Ca m'étonne assez d'ailleurs, est ce qu'il y a une différence entre un évènement généré par la souris ou le clavier et un évènement identique généré en javascript ? Tout se passe comme si la fenêtre restait bloquée dans l'attente de quelque chose, mais je ne vois pas ou.

# Re: Fermeture asynchrone de Dialog

Envoyé par : papy

Date : 05/04/2007 12:04

Bon finalement il y a une solution, toute bête en plus ;) Il suffit de ne pas appeler close dans le context du callback, donc ceci fonctionne très bien (même si le callback est très long)

 setTimeout(close, 1);

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.