Détection fermeture fenêtre / onglet.
Bonjour à tous.
Je sais que le sujet a été maintes et maintes fois abordé, mais je n'arrive pas à faire ce qu'on me demande : il faut qu'on écrive un fichier a un endroit précis lorsque l'utilisateur ferme l'onglet ou le navigateur.
Voici ce que j'ai fait :
Code:
1 2 3 4 5 6 7 8 9 10
|
...
<script type="text/javascript">
window.addEventListener('beforeunload', function (e) {
EcrireTraceEnCours("FERMETURE DE LA PAGE INDEX.HTML");
// e.preventDefault();
e.returnValue = '';
});
</script>
</HTML> |
Code:
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
function EcrireTraceEnCours(P_Module)
{
$.ajax(
{
type: "GET",
url: "./fichiersXML/data/Parametres.xml",
async: false,
dataType: "xml",
error: function()
{
alert("ERREUR : Fichier " + xmlFile + " non trouvé !");
//writelog(logFile, "ERREUR : Fichier " + xmlFile + " non trouvé !");
},
success: function(xml)
{
$(xml).find('PARAM').each(function()
{
let type = $(this).find('MODE').text();
let sender = $(this).find('SENDER').text();
if (type == "fichier" || type == "F")
{
let G_EnCours = $(this).find('FILEPATHENCOURS').text();
let G_MsgLOC = $(this).find('FILEPATHMSG_LOC').text();
let emetteurDeb = document.getElementById("debMail").value;
let emetteurFin = document.getElementById("finMail").value;
if (emetteurDeb != "" && emetteurFin != "")
{
let WDateID = new Date();
let WAn = WDateID.getFullYear();
let WMois = WDateID.getMonth() + 1;
if (WMois < 10)
{
WMois = "0" + WMois;
}
let WJour = WDateID.getDate();
if (WJour < 10)
{
WJour = "0" + WJour;
}
let WHeure = WDateID.getHours();
if (WHeure < 10)
{
WHeure = "0" + WHeure;
}
let WMin = WDateID.getMinutes();
if (WMin < 10)
{
WMin = "0" + WMin;
}
let WSec = WDateID.getSeconds();
if (WSec < 10)
{
WSec = "0" + WSec;
}
let WDateFicLOG = WAn + "_" + WMois + "_" + WJour;
let WHeureFicLOG = WHeure + "h" + WMin + "m" + WSec + "s";
let WDateLOG = WDateFicLOG + "_" + WHeureFicLOG;
let WNomFic = "JS_MULTIVAC3_";
WNomFic = WNomFic + emetteurDeb + "_" + emetteurFin + "_";
let WNomFicEnCours = G_EnCours + WNomFic + WDateLOG +".txt";
let WNomFicLoc = "";
if (P_Module.indexOf("FERMETURE DE LA PAGE") != -1)
{
WNomFicLoc = G_MsgLOC + WNomFic + P_Module + ".txt";
}
else
{
WNomFicLoc = G_MsgLOC + WNomFic + WDateLOG +".txt";
}
let WTexte = "DEBUT_TRAITEMENT;" + WDateFicLOG + "_" + WHeureFicLOG + "\r\n";
WTexte = WTexte + "UTILISATEUR;" + emetteurDeb + "@" + emetteurFin + "\r\n";
WTexte = WTexte + "MODULE;" + P_Module + "\r\n";
console.log("G_MsgLOC="+G_MsgLOC);
console.log("G_EnCours="+G_EnCours);
console.log("P_Module="+P_Module);
console.log("emetteurDeb="+emetteurDeb);
console.log("emetteurFin="+emetteurFin);
console.log("WNomFicEnCours="+WNomFicEnCours);
console.log("WNomFicLoc="+WNomFicLoc);
console.log("WTexte="+WTexte);
writeFile(WTexte, WNomFicLoc, emetteurDeb, emetteurFin);
let WCmd = "cp " + WNomFicLoc + " " + WNomFicEnCours;// Copie du fichier créé dans /mnt/nas03/vista/fredarch/en_cours
sshRun(WCmd);
}
else
{
alert("Adresse mail non ou mal renseignée.");
}
};
});
}
});
} |
La fonction EcrireTraceEnCours fonctionne correctement.
Les fichiers sont bien créés et copiés comme on le souhaite quand on change de page, mais pas du tout quand on ferme l'onglet et/ou la fenêtre.
Qu'est-ce que je loupe ?
Merci d'avance.