以下の Stack Overflow のような確認ダイアログの結果をキャプチャする方法はありwindow.onbeforeunload
ますか (これは、質問を投稿せずに「質問する」ページを離れたときに発生します)。
Chrome ではこのように表示されます。他のブラウザでは少し異なると思いますが、常に何らかの形の yes/no ボタンが表示されます。
おそらく、イベントがトリガーされた後も問題のあるページにまだいる場合、彼らはとどまることを選択し、おそらくjsのシーケンスを見ることでこれを理解できます. ただし、「このページを離れる」をクリックしたかどうかを判断する方法を知りたいですか?
私はこれを以下のように実装しました:
// concept taken from SO implementation
function setConfirmUnload(showMessage, message) {
window.onbeforeunload = showMessage ? (message ? message : "this is a default message") : null;
}
// pseudo code
listen to changes on inputs
if any inputs fire a change event
call setConfirmUnload(true, 'My warning message')
サイト内でjQueryを使用していることに注意してください。
私は本質的にGmailのような下書きの実装を実装しようとしています.ユーザーがフォームを保存せずに変更を加えたページを離れると、同様のダイアログが表示されます. 彼らが変更を破棄してページを離れることを選択した場合、データベースからいくつかの一時レコードをクリーンアップする必要があります (私は AJAX 呼び出しを考えているか、delete
フラグを付けてフォームを送信するだけです)。
私の質問は以下にも関連しています:
手動更新でページを取得した後に起動する onunload ハンドラでの jQuery AJAX 呼び出し。onunload が最初に発生することを保証するにはどうすればよいですか?