Merci pour ces conseils sur les bonnes pratiques basiques 
J'ai désormais le code suivant :
<BODY ONLOAD="setHiddenValues();allerEmballage();optPf();optionsEtiquettes();" ONCLICK="cacheListes();" onbeforeunload="return delEditUser();">
et
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
| function delEditUser(){
if (quitPropre == false) {
alert ("onbeforeunload !");
var certainQuitter = confirm("Voulez-vous quitter cette page sans enregistrer vos modifications ? \n \n [OK] pour quitter \n [Annuler] pour rester sur cette page");
if (certainQuitter) {
alert("oui je suis sur");
var formId = document.myForm._1_1_243_1.value; var ajaxUrl='livelink.exe'; var postData = new Object();
postData.func = 'll'; postData.objId = report_delEditUser; postData.objAction = 'RunReport'; postData.nextUrl = '';
postData.idFormulaire = formId;
$j.ajax ({
type: 'POST',
url: ajaxUrl,
data: postData,
success: function(){
document.location = document.getElementById('_1_1_245_1').value;
}
});
return false;
}
else {
alert("au temps pour moi");
return false;
}
}
} |
et j'ai désormais 2 fenêtres de confirmation : la mienne puis une IE indiquant ""Voulez-vous vraiment quitter cette page ?" puis "false" à la ligne, puis encore à la ligne "Voulez vous fermer..." avec [OK] et [Annuler]
Voici les quatre scénarii de clics lors de la fermeture de l'onglet :
1.
alert "onbeforeunload !" (OK)
Confirm perso
Si [OK]
alert "oui je suis sur" (OK)
Popup IE "Voulez-vous vraiment quitter cette page ? false"
Si [OK]
Fermeture de l'onglet, l'ajax s'est exécuté
2.
alert "onbeforeunload !" (OK)
Confirm perso
Si [OK]
alert "oui je suis sur" (OK)
Popup IE "Voulez-vous vraiment quitter cette page ? false"
Si [Annuler]
onglet redirigé par le "document.location", l'ajax s'est exécuté
3.
alert "onbeforeunload !" (OK)
Confirm perso
Si [Annuler]
alert "au temps pour moi" (OK)
Popup IE "Voulez-vous vraiment quitter cette page ? false"
Si [OK]
Fermeture de l'onglet, l'ajax n'est pas exécuté
4.
alert "onbeforeunload !" (OK)
Confirm perso
Si [Annuler]
alert "au temps pour moi" (OK)
Popup IE "Voulez-vous vraiment quitter cette page ? false"
Si [Annuler]
On reste sur la page, l'ajax n'est pas exécuté
Seuls le 1. (dans le cas où l'utilisateur veut effectivement partir. L'ajax doit être exécuté) et le 4. (dans le cas où il souhaite annuler, l'ajax ne doit pas être exécuté)
Je vais commencer par enlever ce document.location...
Si vraiment je n'ai pas ce que je veux, je ne demanderai rien à l'utilisateur et exécuterai l'ajax, et pis tant pis
Partager