0

誰かがページを離れることを決定する前に、ajax関数を呼び出すことが可能ですか。つまり、ユーザーが離れるか、留まるかをユーザーに尋ねることができます。しかし、ユーザーが「はい、ページを離れる」ボタンをクリックしたときの動作を変更する方法がわかりません。

このコードは機能しています。

<head>
<script type="text/javascript">
    function catchExit() {
        return "All your data is going to be lost. Are you sure??";
    }
</script>
</head>
<body onbeforeunload="return catchExit()">
<p>
    Dont leave the page.
</p>
</body>
4

2 に答える 2

1

これを使用する別の方法は次のconfirmとおりです。

function catchExit(){
  var exit = confirm("Are you sure?");
  if (exit){
  }
}

ただし、AJAXはスレッドを停止できないことに注意してください。これは、呼び出しが保証されないことを意味します。

  1. それを作ります
  2. 成功している
  3. 結果を返しました

AJAXが完了する前に、ウィンドウにプロンプ​​トが表示されたり、終了したりします。それをよりよく説明するために:

function catchExit(){
  $.ajax({
    success: function(){
      // this is an entirely new thread and returning a result
      // has ZERO effect on the original catchExit function
      // (And chances are it's already executed and is long gone)
    }
  });
  // this (99.99% of the time) will be called long before
  // 'success' above is called, therefore making 'success' and its
  // outcome moot.
  return "There are unsaved changes, are you sure you want to exit?";
}
于 2012-08-18T12:52:34.960 に答える
0

実際、私は自分の$.ajax()電話を機能させる方法を見つけました。Firefox、chrome、iexplorer、safariで動作するようにasyncパラメータを設定します。falseオペラでは機能しません。

于 2012-08-20T16:17:25.603 に答える