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

JavaScript Discussion :

Attente réponse puis fermer la fenetre


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 47
    Par défaut Attente réponse puis fermer la fenetre
    Bonjour,

    dans un formulaire, lorsqu'on clique sur le bouton submit, un traitement est lancé (plus ou moins long) et la réponse est sous la forme d'un pdf.

    J'aimerais qu'une fois la réponse a été envoyé, que la fenêtre se ferme.
    J'aimerais après que l'utilisateur ait enregistré ou lancé le pdf, la fenêtre se ferme.

    J'ai bien essayé avec un code tous simple :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function runFriendly() {
    		document.forms[0].submit();
    		window.close();
    	}
    Sauf que la réponse n'a pas été envoyé quand la fenêtre se ferme.

  2. #2
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Salut,

    Il faut bien voir ce qui se passe au niveau du réseau. La soumission d'un formulaire se fait en trois temps :
    1. le navigateur envoie la requête au serveur ;
    2. le serveur traite la demande et produit la réponse ;
    3. la réponse arrive au navigateur.

    Tout ça prend du temps. Un temps très long par rapport à l'exécution d'une instruction JavaScript. Lorsque tu fais ton submit(), le navigateur envoie la requête ; juste après vient le close(), qui se comporte exactement comme si l'utilisateur fermait lui-même la fenêtre : la requête, qui vient tout juste de partir, est annulée.

    Ce qu'il faudrait c'est un script capable d'attendre la réponse du serveur : un script Ajax !


    Par contre, le fait que la réponse est un pdf va poser problème : Ajax ne sait pas traiter les fichiers (pour des raisons de sécurité). À mon humble avis, il n'y a pas de solution à ton problème… Quand je regarde sur les sites de téléchargement (les forges et autres), la page « Your download will start shortly… » reste ouverte une fois le téléchargement terminé.

    Pour moi, la meilleure chose à faire est de rajouter un lien « fermer la fenêtre » sur lequel l'utilisateur cliquera lui-même.

    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <form ... target="_blank" >

    Tu faits un setTimeout après le submit (le temps d'envoyer les données) pour faire le window.close.

    A+.

  4. #4
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Tu faits un setTimeout après le submit (le temps d'envoyer les données) pour faire le window.close
    L'idée n'est pas mauvaise mais c'est la temporisation qui est plus délicate... le temps de l'envoi/traitement/réponse risque de différer pas mal selon les configs, selon l'état du réseau, etc.

    C'est à essayer. Si avec un temps estimé (et éventuellement ajusté a posteriori) les résultats sont globalement satisfaisants, ça peut être une solution intermédiaire acceptable ^^

    (remarque en passant : je suis malgré tout assez d'accord avec la conclusion de Watilin suggérant de laisser en définitive la main à l'utilisateur... on a tous bien trop souvent fait l'expérience de devoir lutter contre une fonctionnalité "automatique" censée nous épargner l'embarras du choix ou nous faire "gagner du temps"... même si je n'ai pas *tousse*word*tousse* d'exemple en tête )

Discussions similaires

  1. [Swing] fermer une fenetre enfant avec un bouton.
    Par TheSeb dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 23/11/2013, 12h42
  2. [Sécurité] Comment puis je fermer une fenetre
    Par Maria1505 dans le forum Langage
    Réponses: 4
    Dernier message: 08/12/2006, 09h49
  3. Comment fermer une Fenetre Modal avec Code ?
    Par Soulama dans le forum Langage
    Réponses: 19
    Dernier message: 13/07/2005, 11h17
  4. Réponses: 3
    Dernier message: 30/06/2005, 12h50
  5. Confirmation avant de fermer une fenetre
    Par Dauphin dans le forum C++Builder
    Réponses: 10
    Dernier message: 26/05/2005, 00h27

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