1. ホーム
  2. javascript

[解決済み] onbeforeunload関数内でカスタムダイアログボックスを使用して、ページの再読み込みを確認する。ボックスがポップアップする前にonbeforeunload関数内で実行されるコード [複製].

2022-02-24 16:23:03

質問

ユーザーがページを再読み込みしようとしたときに、確認ボックスを表示させたい。私のプロジェクトで試しましたが、うまくいきませんでした。私が試したことのサンプルコードを作成しましたが、それさえも動作しません。どなたか、私がどこで間違ってしまったのか、教えていただけませんか?私は確認ボックスを得ることさえできません。私はChrome 33+を使用しています。ボックスがポップアップする前に、window.onbeforeunloadでいくつかのコードを実行する必要があります。

<!DOCTYPE>
<html>
<body>
    <script type="text/javascript">
        window.onbeforeunload = function()
        {
          var r = confirm("Are you sure you want to reload the page.");
          if(r)
          {
            window.location.reload();
          }
          else
          {

          }
        };

    </script>
</body>
</html>

解決方法は?

これでうまくいきます。

 window.onbeforeunload = function ()
 {
     return "";
 };

最近のChromeのバージョン(と、おそらく他のいくつかのバージョン)では onbeforeunload . 関数内の他のコードは、少なくともChromeでは無視されるようです。

を実行します。空文字列とは異なるものを返すこともできますが(カスタムにする)、そうすると質問が重複してしまいます(あなたのメッセージとブラウザが提供するもの)。

IE9とChromeの最新版でテストしました。アラートボックスが起動し、ユーザーが再読み込みをするかどうかを尋ねます。