[important] Fermeture de la fenêtre du navigateur

Eléphant du PHP | 441 Messages

18 oct. 2005, 14:40

bonjour à tous,
il s'agit d'un pb javascript et php donc j'ai placé le sujet ici :roll:

Alors j'ai besoin de vos lumières pour le cas de la fermeture de la fenêtre du navigateur.
Dans mon application, lorsque l'utilisateur ferme la fenetre je voudrais contrôler cette fermeture en affichant un message de confirmation d'enregistrement des données en session. Je sais qu'il y a l'évènement onunload qui est là mais j'ai un doute.
J'ai remarqué que lorsque j'ai plusieurs fenetre de navigateur ouverte, si j'en ferme une, les données en session de celle-ci sont conservées. C'est à dire si j'ouvre à nouveau la fenêtre sur le même site web par exemple je retrouve ma session. Par contre si je n'avais qu'une seule fenêtre, la session est perdue.
En gros, est-il possible d'après vous de contrôler la fermeture de la fenêtre en proposant d'enregistrer les données en session(PHP) avant de quitter l'application?
Merci d'avance :wink:


edit de mere-teresa : je déplace ton forum dans Javascript, pour que tu aies plus de réponses.
Futures Stars par ici >> www.apel-doorn.com
fan d'info et du ... PSG !! :D
Apprendre, comprendre et maîtriser telle est ma devise!
Fan inconditionnel de netvibes

Mammouth du PHP | 568 Messages

18 oct. 2005, 15:49

Oui en effet, c'est bien onunload... Mais je sais pas si tu t'en sortiras en effet... Car la logique, ça serait un truc du genre :
onunload, je charge rapidement une page (location.href="truc.php") truc.php servant à enregistrer tes variables sessions...

Si tout va bien, elle fermera la fenêtre une fois chargée...
Si tout va pas très bien, elle ne fermera pas la fenêtre automatique et dans ce cas, tu devras rajouter un peu de javascript dans truc.php pour fermer automatiquement la fenêtre...
Si ça ne va pas du tout, elle te ferera la fenêtre avant d'avoir rechargé truc.php...

Sur les 3 possibilités, je ne sais pas du tout quel sera la réaction du navigateur (peut-être différent d'ailleurs entre IE, FF, opera, etc...)

A tester !
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

Eléphant du PHP | 441 Messages

18 oct. 2005, 16:20

les évènements unload et onbeforeunload se déclenchent essentiellement au chargement de page (plus la fermeture pour before) ...
il n'y a pas un moyen de capturer l'évènement de fermeture seul? il y a window.onclose ...mais je n'arrive pas du tout à m'en servir pour ce que je veux... :roll:
d'autres idées? :idea:
Modifié en dernier par starkeus le 18 oct. 2005, 16:23, modifié 1 fois.
Futures Stars par ici >> www.apel-doorn.com
fan d'info et du ... PSG !! :D
Apprendre, comprendre et maîtriser telle est ma devise!
Fan inconditionnel de netvibes

Mammouth du PHP | 568 Messages

18 oct. 2005, 16:23

les évènements unload et onbeforeunload se séclenchent essentiellement au chargement de page (plus la fermeture pour before) ...
bin v'la aut' chose ! Au chargement de la page, c'est onLoad
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

18 oct. 2005, 17:00

Quand il ferme la fenêtre, il aura encore un clic de plus à faire pour réellement fermer la fenêtre ? C'est naze !
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphant du PHP | 441 Messages

18 oct. 2005, 20:15

Quand il ferme la fenêtre, il aura encore un clic de plus à faire pour réellement fermer la fenêtre ? C'est naze !
tu vas vite en besogne "mamie" :wink:

edit mere-teresa : comment dire....hum.....Puceau ?

il s'agit d'une application web intranet de compta...non d'un site web :)
Cela doit simplement éviter que l'utilisateur ferme la fenetre sans avoir enregistrer les données en session!
Bon après une après-midi de recherche, la solution est d'utiliser un fameset...Avec une frame vide sur laquelle s'appliquera l'évènement onBeforeUnload...voilà. Bon frame me direz-vous mais je suis ouvert à toute autre solution meme si celle-ci étant donné le contexte intranet n'est pas la pire :wink:
Futures Stars par ici >> www.apel-doorn.com
fan d'info et du ... PSG !! :D
Apprendre, comprendre et maîtriser telle est ma devise!
Fan inconditionnel de netvibes

Mammouth du PHP | 19672 Messages

18 oct. 2005, 20:37

tu vas vite en besogne "mamie" :wink:
Il y en a qui ont peur de rien :-"
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

18 oct. 2005, 21:23

tu vas vite en besogne "mamie" :wink:
"Ci-gît Starkeus, accidentellement écrasé par un crucifix de 20 tonnes tombé là par le plus grand des hasards..." :-"

Mammouth du PHP | 19672 Messages

18 oct. 2005, 21:26

"De profundis.....":-"
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

18 oct. 2005, 21:33

"... morpionibus"
Moi aussi, j'connais mes classiques ! :langue:



Reprenant l'idée d'heddicmi, quelque chose dans ce style pourrait-il te convenir ?
<body onunload="window.open('truc.php','session_enreg','...');">

Eléphant du PHP | 441 Messages

18 oct. 2005, 22:34

désolé du retard mais St Pierre m'a donné une perm' spéciale histoire de cloturer ce topic O:) ( tu vas me manquer "mamie" :love5: )

la difficulté avec onunload que cet évènement se déclenche au rechargement de la page...donc par exemple si je suis en mode modification d'une entité et que je valide mon formulaire...cet évènement se déclenchera quand meme. Or je ne veux que "capturer" l'évènement de fermeture de la fenetre. La plupart des solutions sur le net sont à base de frameset... :-k mais bon on sait jamais. :wink: à suivre comme on dit. :arrow:
Futures Stars par ici >> www.apel-doorn.com
fan d'info et du ... PSG !! :D
Apprendre, comprendre et maîtriser telle est ma devise!
Fan inconditionnel de netvibes

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

19 oct. 2005, 11:09

:axe: