0

当我关闭浏览器时,我必须执行一些服务器端功能。

如果在执行服务器端功能时发生任何异常,我必须显示一条警告消息“操作不成功”,在这种情况下,浏览器不应关闭。

4

4 回答 4

1

实际上,您不能阻止用户关闭窗口。但是,您可以通过您的消息提醒他/她,要求用户留下或离开页面,这通过绑定到onbeforeunload事件来完成。

var showAlert = false;
window.onbeforeunload = function(){
    $.ajax({
       url: "serversideprcess.aspx",
       async : false
       }).done(function ( data ) {
        if(data !="success") 
           showAlert = true;
      }).fail(function(){
    showAlert = true;
    });

    if(showAlert){
       return "Operation unsuccessful";
    }
}

ajax 请求必须是同步的:async : false

于 2012-10-18T05:17:13.417 回答
1

你不能。

您根本无法阻止浏览器窗口关闭。曾经。您也不能在处理程序中执行任何需要时间的工作(例如 HTTP 请求)onbeforeunload——您真正可以做的就是显示一个确认对话框。

于 2012-10-18T05:22:56.893 回答
0
window.onbeforeunload = WindowCloseHanlder;
function WindowCloseHanlder() {
    //Call ajax server code CallIntiateAjaxCalling();
    if (conditionfails) {
        alert("condition fails")
            return false;
    }
}
于 2012-10-18T06:46:46.160 回答
0

也许您可以使用此代码

<html>
<head>
<script type="text/javascript">
  var hook = true;
  window.onbeforeunload = function() {
    if (hook) {
      return "Did you save your stuff?"
    }
  }
  function unhook() {
    hook=false;
  }
 </script>
</head>
<body>

<a href="http://google.com">external link</a>


</body>
</html>
于 2012-10-18T05:09:39.353 回答