0

ユーザーがページを閉じると、(ポップアップなしで) 数秒待ってからページを閉じるスクリプトが必要です。

ここのどこかで、ajax を使用して (私の記憶が正しければ)、php ファイルを実行し、閉じる前に応答を待つという方法を見たのを覚えていますが、もう見つかりません。php ファイルにはスリープ機能が含まれていました。

どんな助けでも大歓迎です


(これは主にテキストをフェードアウトするために使用されます。ユーザーがサイトに来ると、css3 トランジションを介してテキストがフェードインし、ページを離れるとテキストがフェードアウトします。フェードアウトの時間が必要なだけです。はい、これはユーザーフレンドリーではありませんが、私は特別にこのようにそれをするように頼まれました)

4

2 に答える 2

2

おそらく、同期 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);
于 2013-09-12T06:52:03.393 に答える
0

jquery unloadを見てください。遅延関数をunload-event にバインドできます。

于 2013-09-12T06:34:07.763 に答える