1

on before unload と unload メソッドに問題があります。onbeforeunload の確認メソッドが true に設定された後にのみ起動する onload メソッドに関して、コードを正しく設定したと思いました。しかし、残念ながらそうではありません。onbeforeunload メソッドが false に設定されていて、ユーザーが Web サイトにとどまりたい場合でも、unload メソッドが開始されます。ここに私が取り組んでいるコードがありますが、それがうまくいくことを願って以来、多くの変更が加えられています。私が望むように機能していないので、そうではないと確信しています。

 var validNavigation = false;

 function wireUpEvents() {

     var leave_message = 'Leaving the page ?';

        jQuery(function goodbye() {
jQuery(window).bind('onbeforeunload', function() {
    setTimeout(function() {
        setTimeout(function() {
            jQuery(document.body).css('background-color', 'red');
        }, 10000);
    },1);
    return leave_message;
});
}); 

     function leave() {
         if(!validNavigation) {
             killSession();
         }
     }

     //set event handlers for the onbeforeunload and onunloan events
     window.onbeforeunload = goodbye;
     window.onunload=leave;
 }
 // Wire up the events as soon as the DOM tree is ready
 jQuery(document).ready(function () {
     wireUpEvents();
 });
4

1 に答える 1

3

onbeforeunloadあなたが思うようには機能しません。undefinedメッセージを表示するか、何もしないハンドラから文字列を返すことができます。

window.onbeforeunload = goodbye;

function goodbye(e) {
    if (!validNavigation) {
        return leave_message;
    } else {
        return undefined;
    }
}

関連:ユーザーが Javascript onbeforeunload ダイアログで [キャンセル] をクリックしたかどうかを知る方法は?

于 2012-09-24T18:37:34.357 に答える