2012-10-18 230 views
-1

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

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

+1

本网站不只是为您提供代码;你需要首先尝试一些东西,以便我们可以告诉你你做错了什么。 –

+0

我相信你不能阻止浏览器窗口关闭。 – Uooo

+1

嘿检查此堆栈溢出问题http://stackoverflow.com/questions/10860642/how-to-show-alert-to-user-if-the-user-is-closing-the-browser?lq=1还试试这个http://www.dotnetobject.com/Thread-Close-the-browser-tab-after-alert-message-click-using-javascript – riti

回答

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> 
+0

你在哪里打电话服务器端功能 – F11

+0

服务器端功能?哪里?在这里,我刚刚使用了关键字window.onbrforeunload。它的DOM。 ANd它的工作 – polin

+0

@Devesh检查我编辑的答案关于如何调用服务器端 –

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

+0

我的答案假设'serversideprcess.aspx'将返回'success'字符串,当操作成功,否则操作不成功。 –

+0

,我有一个方法TEST在serversideprcess.aspx中,这个方法将返回true或false.Now如何在上面实现它,并基于返回类型,我必须决定是否显示alert或不? – F11

1

你不能。

您无法阻止浏览器窗口关闭。永远。您也不能在onbeforeunload处理程序中执行任何需要时间(如HTTP请求)的工作 - 您只能显示一个确认对话框。

0
window.onbeforeunload = WindowCloseHanlder; 
function WindowCloseHanlder() { 
    //Call ajax server code CallIntiateAjaxCalling(); 
    if (conditionfails) { 
     alert("condition fails") 
      return false; 
    } 
}