在某人决定离开页面之前调用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>
答案 0 :(得分:1)
以下是使用confirm
的替代方法:
function catchExit(){
var exit = confirm("Are you sure?");
if (exit){
}
}
但请记住,AJAX无法阻止线程。这意味着无法保证通话:
在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?";
}
答案 1 :(得分:0)
实际上,我找到了一种让$.ajax()
通话工作的方法。将async
参数设置为false
适用于firefox,chrome,iexplorer和safari。它只适用于歌剧。