Mon cookie fonctionne bien Je ne mentionne pas la date de mentionner ainsi lorsque la fenêtre du navigateur est supprimée, le cookie est supprimé.
Mais quand je ferme une onglet dans une fenêtre de navigateur, la cookie n'est pas supprimée et ouvre la même page d'état de cookie conservé Lorsque j'ouvre le site Web P>
Comment supprimer un cookie lorsqu'un utilisateur ferme une onglet Navigateur? P>
ci-dessous est mon code P>
$(document).ready(function(){ var href = $.cookie("activeElementHref"); if(href!==null) { setContainerHtml(href); }; $('nav ul li a').click(function(e){ e.preventDefault(); href= $(this).attr('href'); $.cookie("activeElementHref", href) setContainerHtml(href); }); }); $(window).unload(function() { $.cookies("activeElementHref",null); }); function setContainerHtml(href) { $.ajax({ type: "POST", url: "baker.php", data:{send_txt: href}, success: function(data){ $('#aside-right, #intro').css('display','none'); $('#main-content').fadeOut('10', function (){ $('#main-content').css('width','700px'); $('#main-content').css('margin','-30px 0 0 100px'); $('#main-content').html(data); $('#main-content').fadeIn('8000'); }); } }); }
3 Réponses :
Vous pouvez appeler la fonction de supprimer des cookies sur les événements Onunload et OnbeForeunLoad. P>
La fonction pour supprimer les cookies est ici ici Comment supprimer Cookie en JQuery au moment de la fermeture du navigateur? P>
J'ai ajouté la fenêtre.unload événement mais lorsque je rafraîchis, la fenêtre est déchargée et que le cookie est supprimé, ne préservant même pas l'état
Vous devez supprimer le cookie sur .unload code> événement
J'ai ajouté la fenêtre.unload événement mais lorsque je rafraîchis, la fenêtre est déchargée et que le cookie est supprimé, ne préservant même pas l'état
Actualiser La page décharge également la page d'abord.
L'événement de déchargement supprime même les cookies sur une page actuelle pour laquelle j'ai défini les cookies
Soyez prudent avec Onunload CODE> &
ONBEFOREUnload CODE> Événements Ils déclenchent même lorsque vous n'attendez pas vraiment cela, lorsque votre application n'est pas une application à une page. Sur le bouton arrière du navigateur, lorsque vous aurez réellement sur le même site Web, vous le ferez également déclenché.
L'événement 'Unload' sera appelé sur la fermeture de l'onglet, le navigateur fermer et sur rafraîchir. Pas une manière appropriée.
Les réponses précédentes supposent que vos cookies ne sont pas marqués comme http-uniquement. Si vous souhaitez prévenir les attaques XSS, vous devez probablement définir vos cookies en tant que http-uniquement et changer les cookies via JavaScript ne fonctionnera pas.
La solution consiste à supprimer le cookie du serveur, qui nécessitera une requête HTTP avant L'onglet est fermé. P>
La plupart des bibliothèques JS utiliseront des demandes HTTP asynchrones, ce qui entraînera la fermeture de l'onglet avant de recevoir le cookie expiré du serveur, de sorte que les appels asynchrones ne fonctionneront pas de manière fiable. p>
La seule façon de le faire fonctionner de manière fiable (au moins sur Chrome) consistait à faire un appel synchrone: p> juste assurez-vous que Pour conserver votre point d'extrémité de déconnexion dans votre serveur simple, la réponse est rapide et que l'interface utilisateur n'est pas bloquée pendant trop longtemps. p> EDIT: Comme mentionné précédemment, en utilisant OnbeforeUnload pour tuer les cookies ne doit être utilisé que si c'est une Application à une seule page. p> p>
Une bonne réponse, cependant, la demande de synchronisation sur la fermeture de la fermeture peut être inacceptable UX
Merci à Google, cette structure fonctionne plus longtemps: je reçois une erreur JavaScript: "Nonau NetworkError: Impossible d'exécuter" Envoyer "sur" XMLHTTPQUEST ": Impossible de charger" mysite.tld '': xhr synchrone à la page renvoyer. Voir chromestatus.com/ Caractéristique / 4664843055398912 Pour plus de détails. "
Dupliquer possible de: Stackoverflow.com/questions/805895/...
Avez-vous déjà trouvé une solution pour cela? J'ai le même problème, j'ai seulement besoin que le cookie soit supprimé sur la fermeture de l'onglet, et non sur la page Actualiser