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()电话正常工作的方法。将async参数设置为false适用于 firefox、chrome、iexplorer 和 safari。它只是在歌剧中不起作用。

于 2012-08-20T16:17:25.603 回答