知らなかったのでメモ:ブラウザやタブが閉じられたかを検知する方法について
こちらは調査した結果、検知できる方法がない。
上記リンクに書かれている通り、「ブラウザが閉じられたか」のみ検知する方法はない。
onunload と onbeforeunload イベント
上記リンクにも書かれている通り、onunload(タイミング:後)およびonbeforeunload(タイミング:前)イベントは、ユーザーが現在見ているウェブページから離れる状況を検知するために使用される。このイベントは以下の3つのケースで発生する:
①閲覧中のページを閉じる(後か前)
②閲覧中のページをリロードする(後か前)
③閲覧中のページを移動する(リンククリックなど)(後か前)
重要なポイント
この3つのケースすべてを検知することができるが、「閲覧中のページを閉じる」イベントのみを検知することはできない。つまり、タブやブラウザを閉じたかどうかを区別する方法はなく、すべて同じイベントとして扱われる。
なんで?
ブラウザやタブが閉じられたかを正確に検知できない理由は、主にセキュリティとプライバシー保護の観点で、ユーザーの行動を監視したり、追跡することを防ぐためだ。
昔のウェブではそれを無理やり検知・阻止しようとするサイトも存在した。
例えば
window.onunload = function () {
while (true) {
alert("閉じないで!");
}
};
→ 本当にこういうことをやる迷惑サイトがあったんで…
(今はalertの使用が禁止されており、主要ブラウザでは通用しない)
また、ユーザーがいつ画面を閉じたかなどの情報を収集して悪用するリスクもある。
結論
現在ではブラウザが画面が閉じられたか検知する方法のほとんどをブロックしており、
ユーザーの体験とセキュリティを守る方向へと進化している。