IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Fermer la fenêtre ouvrante


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Ishizaki
    Inscrit en
    Avril 2006
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 262
    Par défaut Fermer la fenêtre ouvrante
    Bonjour, je voudrais fermer une fenêtre après des traitements dans la première.

    Ma première fenêtre qui s'ouvre est en fait une fenêtre d'attente, qui affiche un gif animé.

    Elle contient un javascript qui redirige vers une autre page aspx:
    Page A:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    /// <summary>
        /// Chargement de la page
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            this.ImageLoading.Visible = true;
            string location = this.Page.ResolveClientUrl("PageB.aspx");
            string script = string.Format("window.location = '{0}';",location);
     
            this.ClientScript.RegisterStartupScript(typeof(System.Web.UI.Page), "OpenPageB", script, true);
     
     
        }
    Ma fenêtre s'ouvre, ensuite, dans ma seconde fenêtre, page B, j'effectue des traitements dans une page asynchrone (requêtes, etc...). A la fin des traitements, je voudrais fermer la page A, qui signifierait l'arrête du chargement. J'ai essayé de l'atteindre avec opener, mais rien n'y fait.

    Page B:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
     /// <summary>
        /// Chargement de la page
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
     
     
            PageAsyncTask asyncPage = new PageAsyncTask(new BeginEventHandler(BeginGetAsyncData), new EndEventHandler(EndGetAsyncData), new EndEventHandler(TimeoutGetAsyncData), "asyncTask", true); 
            this.Page.RegisterAsyncTask(asyncPage);
     
        }
     
     
        /// <summary>
        /// 
        /// </summary>
        /// <param name="src"></param>
        /// <param name="args"></param>
        /// <param name="cb"></param>
        /// <param name="state"></param>
        /// <returns></returns>
        IAsyncResult BeginGetAsyncData(Object src, EventArgs args, AsyncCallback cb, Object state)
        {
     
           //traitements...
        }
     
        /// <summary>
        /// Timeout
        /// </summary>
        /// <param name="ar"></param>
        void TimeoutGetAsyncData(IAsyncResult ar)
        {
            return;
        }
     
        /// <summary>
        /// EndAsync
        /// </summary>
        /// <param name="ar"></param>
        void EndGetAsyncData(IAsyncResult ar)
        {
     
            //Opener:PageA
            StringBuilder sbScript = new StringBuilder("opener.focus();");
            sbScript.Append("opener.location.href = opener.location;");
            sbScript.Append("opener.close();");
     
            this.Page.ClientScript.RegisterStartupScript(typeof(System.Web.UI.Page), "close", sbScript.ToString(), true); 
            Response.Clear();
            Response.ContentType = "application/vnd.ms-excel";
            Response.AddHeader("Content-disposition", "inline; filename=report.xls");
     
     
           //Traitements pour génération Excel...
            Response.End();
     
     
        }
    Je voudrais donc fermer la page A à la fin des traitements de la page B.

    Merci de votre aide.

  2. #2
    Membre éclairé Avatar de Ishizaki
    Inscrit en
    Avril 2006
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 262
    Par défaut
    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    opener.location.close();
    Marche pas non plus.

  3. #3
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    window.opener.close peut etre

  4. #4
    Membre éclairé Avatar de Ishizaki
    Inscrit en
    Avril 2006
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 262
    Par défaut
    Nop, déjà essayé.

  5. #5
    Membre éclairé Avatar de Ishizaki
    Inscrit en
    Avril 2006
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 262
    Par défaut
    J'arrive à le fermer sur le Timeout, c'est déjà ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    /// <summary>
        /// Timeout
        /// </summary>
        /// <param name="ar"></param>
        void TimeoutGetAsyncData(IAsyncResult ar)
        {
            Response.Clear();
            Response.Write("<html><head><title></title></head><body><script type=\"text/javascript\">alert('Le délai de création du fichier Excel a expiré !');this.close();</script></body></html>");
            Response.End();
            return;
        }

  6. #6
    Membre éclairé Avatar de Ishizaki
    Inscrit en
    Avril 2006
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 262
    Par défaut
    Trouvé !

    Dans ma page A je mets en place un setTimeout en js qui va se faire se fermer la fenêtre au bout d'un certain temps (bon par contre je mets le delay à la mano, je ne vois pas comment récupérer la valeur du AsyncTimeout de ma page B) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <script type="text/javascript">
            setTimeout("this.close();",10000);
    </script>
    Merci de votre aide .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Delphi 6] Empêcher l'ouverture ou fermer une fenêtre
    Par KrusK dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 08/09/2005, 11h55
  2. Fermer une fenêtre depuis une autre...
    Par nicolb dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/03/2005, 10h22
  3. Comment fermer une fenêtre quand la souris et clavier sont inactifs ?
    Par Goldenkiller dans le forum Composants VCL
    Réponses: 7
    Dernier message: 06/12/2004, 22h09
  4. Fermer la fentre sans quitter le programme?
    Par tomburn dans le forum OpenGL
    Réponses: 13
    Dernier message: 06/12/2004, 17h02
  5. Fermer une fenêtre au bout d'un certain temps.
    Par cprogil dans le forum Composants VCL
    Réponses: 5
    Dernier message: 27/11/2003, 18h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo