おそらく、同期 ajax リクエスト (UI をブロックする) について考えているでしょう:
window.addEventListener('unload',function()
{
var xhr = new XMLHttpRequest();
xhr.open('GET', 'script.php?when=unload',false);//<-- false makes request synchronous
xhr.send();
},false);
しかし、他の方法もあります。この回答を確認してください
。
全体として、私はこのようなことはしません。気が向いたときにウィンドウを閉じるオプションをサイトが拒否しようとした場合、私は二度とそのサイトを使用したり訪問したりしません。それと、JS コードは依然としてブラウザーの実装方法の影響を受けており、ブラウザーはクライアントの OS によって制御される可能性があるという事実。kill -9
ブラウザ アプリケーションを閉じると、特にブラウザ プロセスを終了した場合 (または ctrl+alt+delを使用)、JS イベントは何も言いません。
最低限できることは、強制終了するか待機するかの選択肢をクライアントに提供し、クライアントがしばらく待機したい理由を説明することです。
window.addEventListener('beforeunload',function u(e)
{
var forceQuit = confirm('\tDo you wish to leave Now?\n
if you do, some changes you made won\'t be saved');
if (forceQuit)
{
return e;
}
//synchronous ajax result here, or:
e.returnValue = false;
e.cancelBubble = true;
if (e.preventDefault)
{
e.preventDefault();
e.stopPropagation();
}
setTimeout(function()
{//first, remove handler, so the beforeunload's behaviour is back to default
window.removeEventListener('beforeunload',u,false);
//dispatch new beforeunload event:
window.dispatchEvent( new Event('beforeunload'));
},5000);
},false);