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 :

Fermeture de Fenêtre JavaScript


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 35
    Points : 25
    Points
    25
    Par défaut Fermeture de Fenêtre JavaScript
    Bonjour à Tous ,

    Je suis entrain de réaliser un système de panier sur un site. Tout se passe très bien, je voulais juste savoir si il était possible d'effectuer une dernière action avant que la fenêtre se ferme.

    Pour le panier, tout se joue en sessions, et je voudrais que quand l'utilisateur clique sur la croix pour fermer la fenêtre ou sort du site, un message de confirmation apparait et si il clique sur OUI, la session se détruit et que je puisse encore effectuer une requête SQL.

    Est ce possible ???
    Merci d'avance !

    MoKeS

  2. #2
    Membre actif Avatar de k1rby
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 181
    Points : 219
    Points
    219
    Par défaut
    Je ne suis pas vraiment penché sur la question mais dans un premier temps je dirai non. S'il est possible de faire s'afficher un fenêtre de confirmation pour sortir du site (ce qui est déjà super relou, quand je clique sur la croix c'est qu'à priori oui je veux sortir --') mais ça se fait en JavaScript, côté client donc. Or une requête SQL se fait côté serveur, il faudrait donc rediriger l'utilisateur vers une page PHP pour faire ta requête avant de fermer la fenêtre. Je vois 2 problèmes à celà :
    1. On ne peut pas fermer en JavaScript une fenêtre qui n'a pas été ouverte par JavaScript
    2. Je ne pense pas que celoi soit possible de rediriger l'utilisateur lors de la fermeture de la fenêtre puisque ça l'empêche alors de fermer la fenêtre donc ce serait une erreur de sécurité que JavaScript ne doit, je pense, pas authoriser


    En esprérant t'avoir un peu éclairé ^^

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 35
    Points : 25
    Points
    25
    Par défaut
    J'ai peut être employé le mauvais mot... par fenêtre de confirmation j'voulais pas que le message soit "Êtes vous sur de vouloir quitter" , (ce qui est je te l'accorde méga relou), mais de dire " Attention, si tu pars du site, ton panier va être annulé".. un truc comme ça ...

    rediriger vers une autre page avant de quitter, j'ai peur que certains navigateur le bloque comme pop up...

    je continue de chercher une solution, ...

    Cordialement,

    MoKeS

  4. #4
    Membre actif Avatar de k1rby
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 181
    Points : 219
    Points
    219
    Par défaut
    Juste une question, sur ton site seul les clients enregistrés peuvent faire un panier, ou tout le monde ?

    S'il n'y a que les clients enregistrés, autant ne pas supprimer le panier, au moins ils peuvent continuer lors de leur prochaine visite. Sinon si tu tiens absolument à supprimer le panier, tu peux le faire non pas à la fermeture mais en fait à l'ouverture : quand l'utilisateur se connecte, s'il a un panier, on le supprime.

    Si tout le monde peut faire un panier, ça demande en effet plus de réflexion ^^

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 35
    Points : 25
    Points
    25
    Par défaut
    Non c'est seulement les clients enregistrés qui ont accès au panier.

    C'est une réflexion à méditer .... ne pas supprimer le panier et laisser à la prochaine fois.... mais ce que je veux éviter, c'est que si ils se connecte le lendemain (la session aura expirée), un nouveau panier sera donc crée laissant l'autre inutilisé.

    Le fonctionnement est le suivant, dès qu'on arrive sur la page un numéro de commande est crée et mis en session. C'est ce numéro qui est utilisé dans le traitement des données. Si le client valide sa commande, ce num de commande prendra comme statut "2" par exemple (contre "1" à sa création).
    Donc si l'utilisateur n'a pas validé ou annulé sa commande, j'aurais des lignes dans ma base qui ne seront jamais utilisées....

    d'où ton idée de faire une vérification quand l'utilisateur se log. C'est une bonne idée. Je vais encore réfléchir à la question.
    En tous cas, merci pour tes idées.

    Cordialement,

    MoKeS

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 319
    Points : 351
    Points
    351
    Par défaut
    Sans poser plus de question sur tes ambitions je peux simplement te dire que tu devrais pouvoir utiliser une requête AJAX pour faire ce que tu décris. Il me semble que tu peux exécuter du code au moment où la fenêtre est sur le point de se fermer. Ça ressemblerait à un truc du genre - avec prototype.js :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Event.observe(window, "beforeUnload", function(event) {
        var request = new Ajax.Request(path, {
            parameter: {/* ... */},
            onComplete: function(response) {/* ... */},
            onException: function(response, exception) {
                throw exception;
            }
    });
    Peut-être voudras tu faire quelquechose lors de la réception de la réponse mais ta fenêtre sera déjà probablement fermée, à moins que tu n'utilises une requête synchrône (mais là ça commence à vraiment dérailler notre affaire... ). En tout cas, avec ça tu es en mesure de notifier le serveur de ce qu'il doit faire à ce moment là.

    Le mot de la fin : à l'heure du DHTML, c'est un peu dommage d'utiliser des fenêtres auxiliaires quand on peut utiliser des composants légers, stylisés, dans une seule et unique fenêtre. Regarde ça par exemple.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 35
    Points : 25
    Points
    25
    Par défaut
    complètement daccord ... merci pour le lien et pour l'astuce j'vais voir ça de plus près !!

  8. #8
    Membre actif Avatar de k1rby
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 181
    Points : 219
    Points
    219
    Par défaut
    Par contre, attention à l'évènement beforeUnload. Il n'est pas standard donc pas reconnu par tous. C'est propriétaire IE et Safari et Firefox le gère également mais pour les autres navigateurs ce n'est probablement pas le cas, je pense notamment aux utilisateur d'epiphany ou autre konqueror, peut utilisés je vous l'accorde mais il faut aussi y penser (ou alors tu mets un avertissement : "si t'as pas ie safari ou firefox, dégage de mon site ").

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 124
    Points : 136
    Points
    136
    Par défaut
    Ca n'empêche pas qu'il trainera des enregistrements pourris dans ton panier, si je retire la prise de mon ordinateur, tu peux te brosser pour réaliser ta requête.
    Idem, si j'ai ma box qui paume sa synchro, que j'ai une attaque en voyant le montant du panier, ...
    Tu ferais mieux d'ajouter un cron à tes pages pour vérifier qu'il n'y a pas des paniers abandonnés dans ta base (si session commencé le, dernier accès le et panier en statut x, alors shoot-le).

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 319
    Points : 351
    Points
    351
    Par défaut
    @k1rby

    En effet, mais bien qu'il ne soit pas vraiment standard, il est mieux supporté que "unload", qui lui est standard. Cherchez l'erreur !

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

Discussions similaires

  1. [Javascript][VBScript]Détection de Fermeture de Fenêtre
    Par JohnBlatt dans le forum Windows
    Réponses: 1
    Dernier message: 24/01/2007, 16h09
  2. fermeture de fenêtre
    Par fontaigo dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 15/04/2006, 21h17
  3. [WD9] Evénement de fermeture de fenêtre
    Par EpOnYmE187 dans le forum WinDev
    Réponses: 3
    Dernier message: 14/12/2005, 10h50
  4. ouverture et fermeture de fenêtre
    Par froggies dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/10/2005, 11h36
  5. opération sur fermeture de fenêtre
    Par java_math dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 20/06/2004, 22h52

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