Comment puis-je gérer navigateur onglet à proximité de l'événement dans Angulaire? Seulement fermer, de ne pas actualiser
Mon but est de supprimer les cookies de l'utilisateur lors de l'onglet du navigateur fermé.
Est-il possible? Puis-je gérer navigateur onglet à proximité de l'événement sans actualiser cas?
Si j'utilise beforeunload
ou unload
événements, la fonction déclenchée lorsque l'utilisateur actualiser la page, je ne veux pas de cela, je veux juste courir lors de la fermeture de l'onglet.
Comment puis-je faire dans Angulaire?
- Essayez cette fois: anguleuse.élément($fenêtre).bind("beforeunload", methodToCall)
- J'ai essayé en .run (), mais ne semblent œuvres.
- quel est le problème que vous avez rencontrés avec ce code.?
- Ne se déclenche pas quand j'ai fermer l'onglet
- Vous pouvez seulement de détecter le moment où la page est déchargé, pas quand la fenêtre est fermée. Aussi, le onbeforeunload est non-standard, il n'est donc pas pris en charge par tous les navigateurs.
- stackoverflow.com/questions/1783302/... dit que les cookies sont supprimés lorsque le navigateur est fermé de toute façon. Il suffit de ne pas définir une date d'expiration sur eux.
- Je crois que c'est ce que je ferais. Merci de remarquer. Je crois que c'est la solution la plus simple pour les cookies. Le cas d'utilisation pour les cookies sont de droit cependant quelque chose comme localstorage-cache ne fonctionne pas avec cette. Rien ici de ce que vous pourriez voulez ajouter? Vous ne voulez pas d'ajouter une nouvelle question pour question connexe.
- sauf si vous êtes (pour certaines raisons) concernés à propos malveillants à l'accès aux données dans le localstorage, voici ce que je ferais... au début de votre session, c'est à dire, la première fois que l'utilisateur accède à la page depuis qu'ils ont ouvert le navigateur, vérifiez cookie session_started, si elle n'existe pas, vous avez une nouvelle session, effacer tout ce que les anciennes données que vous aviez sauvegardé dans localstorage et recommencer à zéro, également mis session_started=true.
Vous devez vous connecter pour publier un commentaire.
C'est, malheureusement, pas un problème simple à résoudre. Mais il peut être fait. La réponse ci-dessous est issue de la fusion de différentes AFIN de réponses.
Simple Partie:
Knowning que la fenêtre est détruite. Vous pouvez utiliser le
onunload
poignée d'événement à détecter ce.Partie Délicate:
Détecter si c'est l'actualisation, lien à suivre ou à la fenêtre désirée à proximité de l'événement. La suppression le lien qui suit et les soumissions de formulaire est assez facile:
Du pauvre Solution
Vérification
event.clientY
ouevent.clientX
pour déterminer ce qui a été cliqué pour déclencher l'événement.De l'Axe Y ne fonctionne pas parce que c'est négatif pour les clics sur les recharger ou de l'onglet/fenêtre fermer les boutons, et positif lorsque les raccourcis clavier sont utilisés pour recharger (par exemple, F5, Ctrl-R, ...) et de fermeture de fenêtre (par exemple, Alt-F4). L'Axe X n'est pas utile puisque les différents navigateurs ont différentes bouton de stages. Toutefois, si vous êtes limité, alors l'exécution de l'événement coordonnées à travers une série de cas-elses pourrait être votre meilleur pari. Méfiez-vous que ce n'est certainement pas fiable.
Impliqués Solution
(Prises de Julien Kronegg) à l'Aide de HTML5 local de stockage et client/serveur AJAX communication. Mise en garde: Cette approche est limitée pour les navigateurs qui supportent le stockage local HTML5.
Sur votre page, ajouter un
onunload
à la fenêtre du gestionnaire suivantPuis ajouter un
onloadon
le corps de la fonction suivanteCommentaires de fermeture (pun intended):
Puisque vous voulez supprimer les cookies lorsque la fenêtre est fermée, je suis en supposant que c'est pour les empêcher d'être utilisé lors d'une session future. Si votre hypothèse est correcte, l'approche décrite ci-dessus fonctionne bien. Vous gardez le invalidé cookie sur le serveur (une fois que le client est déconnecté), lorsque le client crée une nouvelle session, le JS va envoyer le cookie sur par défaut, à quel point vous savez que c'est à partir d'une ancienne session, le supprimer et éventuellement fournir un nouveau à être mis sur le client.
Poor-man's solution
est encore plus pauvres si l'utilisateur ferme son onglet à l'aide d'un raccourci clavierC'est assez débattu de savoir si nous pouvons le faire ou pas dans un fou preuve manière. Mais, techniquement, pas beaucoup de choses qui peut être fait ici, depuis le temps que vous avez est tout à fait moins et si le client ferme avant de vos actions complets, vous êtes en difficulté, et vous êtes à la merci de la client complètement. N'oubliez pas d'injecter $de la fenêtre. Je conseil de ne pas en dépendre.
javascript détecter la fermeture du navigateur à onglet/fermez le navigateur
Mise à jour:
J'étais à la recherche de cette question avec quelques recommandations. Et en dehors de cette option ci-dessus, la meilleure façon, vous pouvez gérer de tels cas est par la création de sessions avec pas de délai d'inactivité de peut-être 25 à 30 min. Convertir tous vos cookies, qui doivent être détruits dans les sessions avec délai d'attente. Alternativement, vous pouvez placer le biscuit échéance, mais alors le cookie reste dans le navigateur jusqu'à la prochaine connexion. Moins de de 25 à 30 minutes de la session de l'inactivité n'est pas complètement fiable puisque vous pouvez obtenir déconnecté si le client n'est pas en utilisant le navigateur pendant 10 à 15 minutes. J'ai même essayé de le capturer les événements de lien (<
a
>) ou (<submit
>) ou (keypress
) en fonction des événements. Le problème est qu'il gère actualisation de la page bien. Mais il ne supprime pas le problème du client, de la fermeture du navigateur ou de l'onglet du navigateur avant que vos cookies sont supprimés. C'est quelque chose que vous avez à prendre en compte dans votre cas d'utilisation, et avec force, faire des compromis en raison de l'absence de contrôle sur elle. Mieux de changer le design de sa dépendance à une meilleure architecture, que d'affronter les problèmes mentionnés plus tard.Peut-être que ce lien va vous aider à http://eureka.ykyuen.info/2011/02/22/jquery-javascript-capture-the-browser-or-tab-closed-event/
Je sais, ça fait un moment depuis que cette question a été posée, mais j'ai pensé que je pourrais apporter ma réponse ainsi. La meilleure façon que j'ai trouvée pour recharger la page sans perdre les cookies et supprimer les cookies sur la fenêtre ou l'onglet à proximité a été d'utiliser ng-keydown pour regarder la Touche F5 (KeyCode 116).
HTML
CONTRÔLEUR
}]);
Si votre objectif est de supprimer les cookies à la fermeture du navigateur, ne pas régler la date d'expiration. Cookies sans expiration sont supprimés lorsque le navigateur se ferme.
Vous ne devriez jamais avoir besoin de savoir si un utilisateur ferme son navigateur ou pas. Je suis persuadé qu'il existe d'autres façons d'accomplir ce que vous êtes désireux de le faire.
La Ligne Du Bas:
Si un visiteur n'est pas sur votre page de plus, il n'en est pas de votre entreprise ce que l'utilisateur est en train de faire avec son navigateur ou de son ordinateur. Ainsi la détection fermeture du navigateur ne sera probablement jamais être mis en œuvre sans une sorte de refus de la part de l'utilisateur, par exemple, les extensions de navigateur/plugins.