2

このサイトでもここにある機能を模倣しようとしています。しかし、それは機能していないようです。私はこれまでのところ、jQuery 1.4.4を使用してこれを実行しようとしています。ここで見つけた多くの例や、思いついた他のフォームをクロールした後です。

$(window).bind('beforeunload', function()
{
    if(show_unsaved_warning == true)
    {
        //e.preventDefault();
        var exitBeforeSave = confirm('You have unsaved changes');
        if(exitBeforeSave == false)
        {
            return false;
        }
    }
});

これは確認ダイアログを表示するまでは機能しますが、[OK]をクリックするか[キャンセル]をクリックしても、ページは引き続き読み込まれます。スタックと同じようにこれを防ぐ必要があるので、フォームに変更が加えられた場合、ユーザーが忘れた場合に備えて変更を保存するか、そのままにしておくようにユーザーに促すことができます。この方程式に欠けているものがありますか、それとも不可能ですか?

これは、ここのスタックや他の数十のフォーラムで何度も聞かれる質問であることに注意してください。私が見つけたものに基づいて何かをつなぎ合わせることができれば、そうでなければ私は尋ねません。私は現在行き詰まっているので、明らかな繰り返しの質問でここに来ています。

編集確認ダイアログで動作するようにコードを少し変更しましたが、問題はまだほとんど残っており、Firefoxでは実際にOK /キャンセルダイアログが表示され、OK /キャンセルをクリックすると、Firefoxは別のプロンプトを作成して終了します/自分でとどまる。どうすればその動作も回避できますか?

4

1 に答える 1

2

onbeforeunload で確認を使用するのはなぜですか? デフォルトでそれを行います。

古いバージョンの jQuery

$(window).bind('beforeunload', function() {
    if(show_unsaved_warning == true) {
        return 'You have unsaved changes.';
    }
});

jQuery 1.7+

$(window).on('beforeunload', function() {
    if(show_unsaved_warning == true) {
        return 'You have unsaved changes.';
    }
});

jsフィドル

于 2012-12-12T04:05:22.497 に答える