2017-01-10 14 views
0

基本的に私はセッションがjavascriptで終わるとき何かをする必要がある。セッションが終了したら何かをしなさい

私はすでに

window.onbeforeunload = function() 

を試してみましたが、クッキーか何かでそれを行う方法があります。 これはjavascriptでなければなりません。なぜなら、これは他のサイトに使用されるだけなので、私のことだけでなく、何もサーバー側で行うことはできません。

+2

セッションはサーバー側で終了します。ウィンドウを閉じると自動的にセッションが終了することはありません。 –

+0

「セッションが終了したとき」とはどういう意味ですか? 'onbeforeunload'で何が間違っていたのですか? –

+0

定期的にサイトをリロード/サーバーにpingを実行しますか? –

答えて

0

あなたのサイトのブラウザのタブがすべて閉じていたらいいと思いますか?

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 
    }}); 

次のように使用してください:あなたはwindow.sessionStorageを使用して検討している、あなたのコメント「ウィンドウが閉じられ、すべてのセッションクッキーが削除されたときに、たとえばセッションクッキーを使用する」に基づいて

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

あなたはユーザーの下からウィンドウをリロードしますか?ウィンドウが消えた場合、 'setTimeout'は決して発生しません。 –

+0

@Dave:それ以外は何も起こりません(サービスワーカーの複雑な構成を除いて...) –

0

MDN上のそれのページから

のsessionStorageプロパティを使用すると、現在の原点のセッションストレージオブジェクトにアクセスすることができます。 sessionStorageはWindow.localStorageに似ていますが、唯一の違いは、localStorageに格納されたデータの有効期限が設定されていない一方、ページセッションが終了するとの場合にのデータがclearされます。ページセッションは、ブラウザが開いている間は続き、ページの再読み込みとリストアを繰り返します。新しいタブまたはウィンドウでページを開くと、新しいセッションが開始されます。セッションクッキーの動作とは異なります。

(私の強調追加)

あなたがやろうとしているように聞こえる何から、これはあなたが必要な正確に何かもしれません。

注:認証やその他の機密データの格納には使用しないでください。

+0

いいえ、私はそれを考慮していませんでした。セッション終わりにデータを送ることができる時点でこれをどのように使用しますか –

+0

Ah 、大丈夫です、それはうまくいかないでしょう。あなたがしていることをあなたのコメントに基づいて誤解しました。私の知る限りでは、 'sessonStorage'がクリアされたときにアクションを引き起こす方法はありません。 – talemyn

関連する問題