Requête Ajax qui ne marche pas avec onBeforeUnload

Eléphant du PHP | 130 Messages

21 mars 2007, 14:04

Salut,

J'ai un petit problème avec onBeforeUnload(). Je viens de remarquer qu'il empechait une requête Ajax de s'éxécuter. Si j'enlève onBeforeUnload, tout fonctionne très bien.

Quelqu'un aurait-il une idée du pourquoi de cette curieuse histoire. D'autant plus curieuse que la fonction qu'appele onBeforeUnload, n'a strictement rien avoir avec l'autre fonction.

L'autre fonction est appelée grace a onClick, cela peut-il venir de là ? Conflit entre onClick et onBeforeUnload ? Merci

Eléphant du PHP | 441 Messages

21 mars 2007, 19:26

un bout de code?
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

Eléphant du PHP | 130 Messages

21 mars 2007, 20:06

bonsoir,

Les codes ajax sont bons puisque ça fonctionne comme une horloge suisse. C'est pour ça que j'ai pas mis le code.

Mais apres quelques tests j'ai trouvé d'ou vient le probleme, et c'est bien onbeforeunload qui fiche la bordel dans mes scripts.

Dans ma page, j'ai donc plusieurs boutons, et lorsque je clique sur l'un d'entre eux, onClick appele une fonction qui va lancer xmlhttprequest, qui finit par appeler un script PHP qui doit créer une variable. Par exemple si je clique sur le bouton BOLD, php créer une variable et l'utilisateur peut taper son texte en gras.

Tout marche tres bien, sauf si j'appele onbeforeunload.
Je viens de faire des tests, et le script PHP crée bien la variable de session, mais il s'agit d'une variable fantome, si si, car lorsque j'ecris du texte, le script qui doit afficher le texte en gras ne fait rien. Et si je fais un refresh la variable de session s'efface tout de suite. J'en ai marre de ces conneries lol

Voici le code du script php qui est super simple :

Code : Tout sélectionner

<?php $text=$_POST['bouton']; if($text=="bold"){ $_SESSION['textgras']=$text; } elseif($text=="italic"){ $_SESSION['textitalic']=$text; } elseif($text=="souligne"){ $_SESSION['textsouligne']=$text; } ?>

Code : Tout sélectionner

<script type="text/javascript"> $winev = window.Event; if(winev){ window.onbeforeunload = function(winev){ return maFonction(winev); } else{ window.onbeforeunload = function(){ return maFonction(winev); }}

Code : Tout sélectionner

<body onbeforeunload="javascript:maFonction()">
Une fois que je clique sur le bouton bold, j'ai bien la variable TEXTGRAS qui s'affiche dans les variables de sessions, mais des que j'ecris et que j'appele ajax pour le script de mise en forme, la variable s'efface tout de suite au meme titre qu'un refresh. Avec onunload, ça marche aucun probleme, mais j'ai absolument besoin de onbeforeunload. J'ai beau cherché sur google une réponse je trouve rien.