2017-01-10 1 views
0

Fondamentalement, j'ai juste besoin de faire quelque chose quand une session se termine en javascript.Faire quelque chose quand une session se termine

J'ai déjà essayé

window.onbeforeunload = function() 

mais est-il un moyen de le faire avec les cookies ou quelque chose. Je dois faire ceci est javascript car il doit être utilisé pour d'autres sites pas seulement le mien, donc je ne peux pas faire quelque chose côté serveur.

+2

Les sessions se terminent côté serveur; fermer une fenêtre ne met pas automatiquement fin à une session. –

+0

Que voulez-vous dire par "quand une session se termine"? Quel était le problème avec 'onbeforeunload'? –

+0

Recharger régulièrement le site/ping sur le serveur? –

Répondre

0

Je pense que vous voulez si tous les onglets du navigateur de votre site sont fermés?

var state=false; 
setInterval(function(){ 
state=false; 
window.postMessage("ami","*"); 
setTimeout(function(){ 
try{ 
if(state==false){ 
window.lonely(); 
} 
}catch(e){} 
},2000); 
},5000); 
window.addEventListener("message",function(e){ 
    if(e.data=="ami"){ 
    window.postMessage("no!","*"); 
    }else if(e.data=="no!"){ 
    state=true 
    }}); 

Utilisez comme ceci:

window.lonely=function(){ 
    alert("im alone :("); 
}; 
+0

Vous rechargez la fenêtre sous l'utilisateur? Et si la fenêtre est partie, ce 'setTimeout' ne se produira jamais. –

+0

@Dave: rien d'autre ne se produira (sauf une construction compliquée de travailleurs de service ...) –

0

Sur la base de vos commentaires « utiliser un cookie de session par exemple lorsque la fenêtre est fermée et sont supprimés tous les cookies de session », avez-vous envisagé d'utiliser window.sessionStorage?

à partir de son page sur MDN:

La propriété sessionStorage vous permet d'accéder à un objet session de stockage pour l'origine actuelle. sessionStorage est similaire à Window.localStorage, la seule différence est que les données stockées dans localStorage n'ont pas d'expiration définie, les données stockées dans sessionStorage sont effacées lorsque la session de page se termine. Une session de page dure aussi longtemps que le navigateur est ouvert et survit à des rechargements de pages et à des restaurations. L'ouverture d'une page dans un nouvel onglet ou une nouvelle fenêtre provoquera l'ouverture d'une nouvelle session, qui diffère du fonctionnement des cookies de session.

(mon accent ajouté)

De ce qu'il semble que vous essayez de faire, cela peut être exactement ce dont vous avez besoin.

REMARQUE: N'utilisez PAS cette fonction pour stocker des données d'authentification ou d'autres données sensibles.

+0

non je ne l'ai pas considéré et comment pourrais-je l'utiliser ainsi au moment où la fin de la session je pourrais envoyer des données à un api –

+0

Ah D'accord, oui, ça ne marcherait pas. J'ai mal compris sur la base de votre commentaire ce que vous essayez de faire. À ma connaissance, il n'y a aucun moyen de déclencher une action lorsque 'sessonStorage' est effacé. – talemyn