当我关闭浏览器时,我必须执行一些服务器端功能。
如果在执行服务器端功能时发生任何异常,我必须显示警告消息“Operation Unsuccessful”,在这种情况下,浏览器不应该关闭。
答案 0 :(得分: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
答案 1 :(得分:1)
你不能。
您根本无法阻止浏览器窗口关闭。永远。你也不能在onbeforeunload
处理程序中执行任何花费时间(如HTTP请求)的工作 - 你真正被允许做的就是显示一个确认对话框。
答案 2 :(得分: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>
答案 3 :(得分:0)
window.onbeforeunload = WindowCloseHanlder;
function WindowCloseHanlder() {
//Call ajax server code CallIntiateAjaxCalling();
if (conditionfails) {
alert("condition fails")
return false;
}
}