やったこと

webサービスを作るときに考えたことを垂れ流します

【javascript】「Onbeforeunload」イベントはページを一回クリックしないと効かない!

「Onbeforeunload」のイベントを使って、ページ遷移を検出しようとしたんですが、一部のケースで検出ができませんでした・・。

それは、ページが表示されていきなり「戻るボタン」を押してブラウザバックしたとき・・。

画面内を一回でもクリックしているときは、ちゃんとイベントが発火するのですが、いきなり「戻る」ボタンを押した場合はイベント発火しない・・。

この動作ですが、下記ページを見るとどうもブラウザの仕様みたいです。
javascript - Onbeforeunload doesn't work until mouse is clicked once in the body - Stack Overflow

ようは悪質なポップアップ広告を避けるために、こういう仕様にしているのだそうな・・。

Note: To combat unwanted pop-ups, browsers may not display prompts created in beforeunload event handlers unless the page has been interacted with, or may even not display them at all.

なんでこの動作にするとポップアップを抑制できるのかよく分かりませんが、これが仕様だということは分かりました・・。
もっと頑張ればよい検出方法があるのかもしれませんが、今回はなんだか疲れたので諦めましょうかね・・。

以上です・・。