J'ai un code javascript qui est chargé par des tiers. Le javascript garde la trace d'un certain nombre de mesures, et lorsqu'un utilisateur quitte la page, je souhaite renvoyer les statistiques à mon serveur.Comment envoyer de manière fiable une requête cross-domain et cross browser à la page de déchargement
En raison de contrôles XSS dans certains navigateurs, comme IE, je ne peux pas faire un simple appel jquery.ajax(). Au lieu de cela, j'ajoute une image src à la page avec jquery. Voici le code, tubé par navigateur:
function record_metrics() {
//Arbitrary code execution here to set test_url
$esajquery('#MainDiv').append("<img src='" + test_url + "' />");
}
if ($esajquery.browser.msie) {
window.onbeforeunload = function() { record_metrics(); }
} else {
$esajquery(window).unload(
function(){ record_metrics(); }
);
}
FF avorte la demande « test_url » si j'utilise window.onbeforeunload, et IE8 ne fonctionne pas avec la décharge de jquery(). IE8 ne fonctionne pas non plus si le code du paramètre test_url est trop long, bien que IE8 semble fonctionner correctement s'il est immédiatement ajouté au DOM.
Y at-il une meilleure façon de résoudre ce problème? Malheureusement, cela doit vraiment s'exécuter lorsqu'un utilisateur quitte la page.
liant la fenêtre avec beforeunload et retourner une chaîne vide provoque une « êtes-vous sûr de vouloir naviguer loin de cette page? » prompt, que je ne peux pas avoir, et il ne parvient pas à faire/terminer l'appel record_metrics. Tout simplement ne pas retourner une valeur ne fonctionne pas non plus. – Agmin