J'essaie de publier des données lorsqu'un utilisateur quitte ma page. J'ai finalement réussi à trouver une solution qui fonctionne. Toutefois, une boîte de dialogue de confirmation s'affiche lorsque l'utilisateur quitte l'application. J'ai essayé return null;
mais cela n'a pas fonctionné. Est-il possible de désactiver le dialogue?
window.onbeforeunload = function() {
$.post("track.php", {
async: false,
refid: refid,
country: country,
type: type,
});
return '';
}
Depuis la page Mozilla Developer Network :
Lorsque cet événement renvoie une valeur non nulle, l'utilisateur est invité à confirmer le déchargement de la page.
Cela signifie que la valeur de retour du gestionnaire doit être undefined
(et non ''
, false
ou null
) afin d'éviter de déclencher l'invite de confirmation.
window.onbeforeunload = function() {
$.post("track.php", {
...
});
return undefined;
}
En javascript, vous pouvez ignorer la valeur de retour pour obtenir le même résultat.
En coffeescript avec jQuery c'est quelque chose comme
$(document).ready ->
$(window).bind('beforeunload', ->
#put your cleanup code here
undefined
)
Si vous souhaitez désactiver la boîte de dialogue, écrivez uniquement
window.onbeforeunload = function() {
...
return;
}
au lieu de
window.onbeforeunload = function() {
...
return '';
}
.
J'espère que cela vous aidera.
Pourriez-vous tester ceci:
$(window).on('beforeunload', function (e) {
if (e.originalEvent) $.post("track.php", {
async: false,
refid: refid,
country: country,
type: type,
});
else $.get("", {
async: false
});
$(this).trigger('beforeunload');
}
Cela créera de nombreuses requêtes inutiles mais devrait laisser à votre première requête suffisamment de temps pour atteindre le serveur.
J'ai trouvé un truc très simple pour que cela fonctionne avec l'aide de
$(window).bind('onbeforeunload', function () {
$.post("track.php", {
async: false,
refid: refid,
country: country,
type: type,
});
});