2017-03-23 6 views
0

どのようにしてリフレッシュボタンクリック(f5)を捕まえることができますか?
- 私がリフレッシュするとき(このアクションのとにかく) - 自分のlocalStorageをクリアする必要があります。
- URLまたはクローズページを変更すると、localStorageは彼の状態を保存する必要があります。
私は、このような問題を解決するいくつかのtopictを発見しました。主な結論はwindow.onbeforeunloadを使用することですが、同時に、このイベントはいつでも発生します(url/ctrl + shift + r/f5/ctrl + rなどを変更しても、ページを更新するときだけでなく)。
リフレッシュイベントのみを取得するチャンスはありますか?たとえば、URLと比較するためのいくつかの方法(現在およびどちらのユーザーが同じものであれば開くか)閉じるイベントを捕まえたり、URLイベントを変更したりせずに、リフレッシュイベントのみを捕捉する方法はありますか?

+0

のhttp:/ /stackoverflow.com/questions/18457797/how-to-know-whether-refresh-button-or-browser-back-button-is-clicked-in-firefox は役に立ちますか? –

+0

[戻るボタンのクリックをブラウザで検出する]の可能な複製(0120-919-03) – CodeMonkey

+0

いいえ、私はこれを読んでいますが、解決法は私を助けませんでした。主な理由は、beforeunloadイベント、魔女のすべてのイベントをキャッチすることが含まれています。私の声では、私はf5またはリフレッシュボタンだけが必要です。 –

答えて

0

その意味では、あなたが望むものはありません。リフレッシュアクションはキャッチ可能ではありません。 しかし、あなたは、この回避策とその動作を実現することができます

if(self.window.name.indexOf("justAwordToNowisYourWindow")!=0){ 
self.window.name = "justAwordToNowisYourWindow"; 
alert("first Load"); 
}else{ 
    alert("reload"); 
} 

また、良いプラクティスとして、アプリケーションの複数のウィンドウが開いている場合は奇妙な行動を防ぐためにタイムスタンプを使用します。

var n = Date.now(); 
if(self.window.name.indexOf("justAwordToNowisYourWindow")!=0) 
{ 
self.window.name = "justAwordToNowisYourWindow"+n; 
alert("first Load"); 
}else{ 
    alert("reload"); 
} 
+0

私はこれについて考えていましたが、私のバージョンでは、beforeunloadイベントから値を返す必要があります。どのように私は理解することができます、私たちはこれを行うことはできません?または、その前に作業することについての私の誤解?私だけが戻り値をキャッチすることができればすべてが簡単になります))) –

+0

あなたはウィンドウの名前と返す必要がある値を使って、アンロード前のイベントでクッキーを作成できます。私たちが取り組むことができるビジネスルールの詳細については、こちらをご覧ください。 –

関連する問題