2016-08-24 5 views
0

タブクローズイベントを検出してlocalStorageをクリアする方法はありますか?タブ間でデータを共有するにはlocalStorageが必要です。 window.onbeforeunloadイベントは正常に機能しますが、私には2つの問題があります:タブ/ブラウザのclose localstorageを閉じるが、更新しないでください。

  1. また、私はしたくないページリフレッシュで起動します。
  2. タブを閉じても確認の必要はありません。

ウィンドウが閉じたときと同様に、sessionStorageはクリアされます。同時に私はlocalStorageをクリアすることができますが、どのイベントをバインドするのか分かりません。私はすでに利用可能ないくつかの質問をチェックしたが、どれもこの問題に対処していないようだが、リンクやフォーム提出をクリックするためのフラグを使用することで回避策があるが、それを行うためのきれいな方法はない。親切にこれに対する解決策を提案してください。

+1

[ブラウザウィンドウのクローズイベントをキャプチャするにはどうすればいいですか?](http://stackoverflow.com/questions/1631959/how-to-capture-the-browser-window-close-event) –

+0

あなたが本当にそれをすることはできないと言っています。 [それを回避する他の方法があります。](http://stackoverflow.com/questions/18783535/jquery-beforeunload-when-closing-not-leaving-the-page)要点は、この質問には複数の質問があります回。これらの質問を見て、あなたの状況に適したものを見つけてください。 –

+0

それから他の質問を読んでください。 –

答えて

2

私はこれに対する解決策を見つけ出し、共有することを考えました。 window.onbeforeunloadイベントはブラウザ/タブクローズで発生しますが、リフレッシュでも(私が望んでいなかった)事は私のlocalstorageがrfreshの時にも処理されていたことでした。私は欲しくない。これを克服するために、1つのイベントハンドラwindow.onloadを実装しました。これは、リフレッシュ時にのみ起動され、タブ/ブラウザの近くでは発生しません。何も起こらなかったかのようにlocalStorageをリセットします。コードは次のとおりです。私は確認のポップアップがタブ/ブラウザを閉じるときに表示され、リフレッシュしたくなかったよう

window.onbeforeunload = function (e) { 
    window.onunload = function() { 
      window.localStorage.isMySessionActive = "false"; 
    } 
    return undefined; 
}; 

window.onload = function() { 
      window.localStorage.isMySessionActive = "true"; 
}; 

私はwindow.onbeforeunloadで未定義戻りました。

関連する問題