ページ間の更新または通常のナビゲーションのためにページがアンロードされたときではなく、ユーザーがブラウザーで [x] をクリックしたときに、いくつかの操作を行う必要があります...
明らかに、onclose、onbeforeunload、または onunload イベントに依存することはできません。これらのイベントは、他のページに移動したり、同じページを更新したりするときにも発生し、それらの操作を実行する必要がある瞬間ではないためです...
どうすればこれを達成できますか?
ページ間の更新または通常のナビゲーションのためにページがアンロードされたときではなく、ユーザーがブラウザーで [x] をクリックしたときに、いくつかの操作を行う必要があります...
明らかに、onclose、onbeforeunload、または onunload イベントに依存することはできません。これらのイベントは、他のページに移動したり、同じページを更新したりするときにも発生し、それらの操作を実行する必要がある瞬間ではないためです...
どうすればこれを達成できますか?
これがIE以外のブラウザで機能するかどうかはわかりません(仕様では、IEでのみチェックする必要があると述べています...)が、これは機能します:
window.onbeforeunload = function() {
if ((window.event.clientX < 0) || (window.event.clientY < 0) || (window.event.clientX < -80)) { // close button
//things to do when the user closes the tab or window pressing the [x]
} else if (window.event.altKey == true) { // ALT + F4
//things to do when the user closes with ALT+F4
}
};
ユーザーがブックマークをクリックした場合、これは機能しません。これは clientY < 0 でもあるためです...