2

ユーザーがブラウザ/タブを閉じる前に機能を有効にする方法は?

以下は私のajaxリクエストです

<script language="JavaScript" type="text/javascript">
 function srh_ajaxfunction_cny(id)
    {var xmlhttp;
    try{xmlhttp=new XMLHttpRequest();}
    catch (e){try{xmlhttp=new ActiveXObject("msxml2.xmlhttp");}
    catch (e){try{xmlhttp=new ActiveXObject("microsoft.xmlhttp");}
    catch (e){alert("Your browser does not support ajax!");      
    return false;}}}
    xmlhttp.onreadystatechange=function(){
    if(xmlhttp.readyState==4){
        alert('done')
    }}  

        xmlhttp.open("get",url_path,true);
        xmlhttp.send(null); 
    }
</script>
4

4 に答える 4

9

beforeunloadイベントを使用します。通常、そのハンドラーに非同期アクションがある場合、ブラウザーはそれらが完了するのを待たず、ページのアンロードを続行します (サーバーに到達する前に ajax 呼び出しを効果的に中断します)。

ブラウザがページをアンロードする前に ajax を通過させるための (ハック的な) トリックがいくつかあります。それらの 1 つ (たとえば、Web ページでの行動を追跡するサービスによって使用される) は、次のようにループを実行しています。

window.addEventListener('beforeunload', function() {
    // number of miliseconds to hold before unloading page
    var x = 200;
    var a = (new Date()).getTime() + x;

    // -----------
    // your ajax call goes here
    // -----------

    // browser will hold with unloading your page for X miliseconds, letting
    // your ajax call to finish
    while ((new Date()).getTime() < a) {}
}, false)
于 2013-03-25T12:09:02.940 に答える
0

この機能を使用します:

$(window).bind('beforeunload', function() {
    //do your stuffs
}); 
于 2013-03-25T12:07:02.040 に答える
0

onbeforeunloadイベントにバインドする

于 2013-03-25T12:07:27.340 に答える
0

関数を にアタッチwindow.onbeforeunloadできますが、chrome では他のコードを実行できません。ユーザーが離れる前に表示される特定の文字列のみを返すことができます。

于 2013-03-25T12:07:51.937 に答える