6

ブラウザーで onbeforeunload イベントのカスタム確認ボックスを作成することは可能ですか? 試してみましたが、2つの確認ボックスが表示されます(1つは私からのもので、確認を返すだけです...そしてブラウザからの標準のものです)。

現時点では、私のコードは次のようになります。

var inputChanged = false;

$(window).load(function() {
    window.onbeforeunload = navigateAway;
    $(':input').bind('change', function() { inputChanged = true; });
});

function navigateAway(){
    if(inputChanged){
        return 'Are you sure you want to navigate away?';
    }
}

これにはjQueryを使用しています。

4

3 に答える 3

11
window.onbeforeunload = function (e) {
  var message = "Your confirmation message goes here.",
  e = e || window.event;
  // For IE and Firefox
  if (e) {
    e.returnValue = message;
  }

  // For Safari
  return message;
};

注意:ほとんどのブラウザは、このメッセージを他のテキストの後に配置します。確認ダイアログの内容を完全に制御することはできません。

于 2009-08-26T19:37:32.770 に答える
3

いいえ、ブラウザから標準のものを避けることはできません。できることは、それにカスタム テキストを挿入することだけです。次のイベント ハンドラーを使用する場合 (プロトタイプ lib 方法を登録):

Event.observe(window, "beforeunload", function(event) {
    if (showMyBeforeUnloadConfirmation)
        event.returnValue = "foo bar baz";
});

(そしてshowMyBeforeUnloadConfirmation本当です) 次のテキストでブラウザーの標準的な確認を取得します。

このページから移動してもよろしいですか?

フーバーバズ

[OK] を押して続行するか、[キャンセル] を押して現在のページにとどまります。

[ OK ] [ キャンセル ]

于 2009-08-26T16:22:27.343 に答える
0

私は同じ問題に直面しました.メッセージを含む独自のダイアログボックスを取得できましたが、直面した問題は次のとおりです。

  1. すべてのナビゲーションでメッセージを表示していたので、閉じるクリックのみが必要でした。
  2. ユーザーが「キャンセル」を選択した場合の独自の確認メッセージで、ブラウザのデフォルトのダイアログボックスが表示されます。

以下は、私が見つけたソリューション コードで、マスター ページに書きました。

function closeMe(evt) {
    if (typeof evt == 'undefined') {
        evt = window.event;
    }
    if (evt && evt.clientX >= (window.event.screenX - 150) && evt.clientY >= -150 && evt.clientY <= 0) {
        return "Do you want to log out of your current session?";
    }
}

window.onbeforeunload = closeMe;
于 2011-06-10T11:16:58.137 に答える