-1

重複の可能性:
JavaScriptで戻るボタンイベントをキャッチする方法はありますか?

私のアプリケーションでは、特定の数のスクリプト(Text1.php、Text2.php、Text3.php)にコードを含めたいのですが、ユーザーがブラウザの戻るボタンをクリックすると、次のような確認ボックスが表示されます。以下の1つ:

confirm("You have clicked on the browser's back button. If you confirm to go back via the browser back button, you will be logged out and lose your current assessment details." + "\n" + "\n" + "Are you sure you want to go back and lose current assessment details?" + "\n" );

要件は次のとおりです。

  1. ユーザーがブラウザの戻るボタンをクリックした場合に確認を表示するにはどうすればよいですか?
  2. ユーザーが確認を確認したら、Text4.phpに移動します(ここでユーザーがログアウトします)
  3. ユーザーが確認をキャンセルした場合は、確認ボックスを閉じるだけで、ユーザーは自分が行っていることを続行できます(これは何かと関係があると思います)return false;
  4. スクリプト(Text1.php、Text2.php、Text3.php)でのみこれを実行する必要があります
  5. すべての主要なブラウザ(IE、Chrome、Firefox、Safari、Opera)で動作するために必要です

ありがとうございました

4

2 に答える 2

6

注:これは、その人が離れるのを防ぐ必要がある場合にのみ行う必要があります(つまり、重要なデータを入力し、ナビゲートすると失われる場合)。また、最近のブラウザでは確認ポップアップをカスタマイズできないことにも注意してください。(古いブラウザでは確認メッセージ本文のカスタマイズが可能でした。)これらはそのような機能の制限です。

beforeunloadイベントを使用してこれを実現できます。古いブラウザでは、確認プロンプトのカスタム文字列を返すことができました。

$(window).bind("beforeunload", function() {
    return "HI"; // This will be shown in the confirmation popup in older browsers.
});​

ただし、コメントで@formiciniが言及しているように、最近のブラウザ(Chrome 87など)ではカスタム文字列は許可されていません。値以外を返すundefinedと確認プロンプトが表示されますが、文字列であっても、ブラウザの一般的なメッセージが表示されるだけです。

$(window).bind("beforeunload", function() {
    return true; // Any non-undefined value will show generic confirmation popup.
});​

また、誰かが希望の方法でページを離れたときにこれをバインド解除することをお勧めします(キャンセルボタン?)。そうしないと、望ましくない動作が発生する可能性があります。

例えば:

$("a").click(function() {
    $(window).unbind("beforeunload");
});
于 2012-11-07T04:42:49.833 に答える
1

ブラウザのセキュリティ制限のためできませんが、ユーザーがページから移動したかどうかはわかります。

この機能でユーザー退会ページを検出できます

window.onbeforeunload = function (e) {
  var message = 'Are you sure ?';
  if (typeof e == 'undefined') {
    e = window.event;
  }
  if (e) {
    e.returnValue = message;
  }
  return message;
}
于 2012-11-07T04:43:32.650 に答える