新米エンジニアの失敗再発防止メモ

自分そしてこの世界の皆が、同じ失敗をしないためのメモ

Twitterやってます!@rakuton_t
欲しいものリストのブタメンを送ってくれた方、ありがとうございます!

【javascript】beforeunloadイベントでページ更新と遷移を判別することはできない。

タイトルの通りです。
beforeunloadイベントでページ更新と遷移を判別することはできません。
よって、離脱とページ更新(リロード)で、確認メッセージを出し分けることもできません。
何故なら、ユーザーの遷移先はプライベートな情報だからです。

例えば、下記のようにbeforeunloadイベント発生時のイベントオブジェクトを出力してみても、次の遷移先の情報は含まれません。

window.addEventListener('beforeunload', (event) => {
  console.log(event);
  event.returnValue = '';
});

自分で確かめたい方は、
上記を適当なページ、例えばこのページで、開発者ツールを開き、コンソールで上記コードを実行した後、
別ページに遷移しようとしたときに出た時のダイアログのキャンセルをクリックし、コンソールに出力されたeventオブジェクトの中身を確認してみてください。
遷移先に関する情報は何もないはずです。

私の記事が役に立ったら、どうぞ何か買ってください!→ Amazon欲しいものリスト