当用户在 beforeunload 上单击 'stay' 时导航到其他页面
Navigate to other page when user clicks 'stay' on beforeunload
我需要一种方法来执行以下操作:
- 当用户点击退出 window 时,应该询问他们是想留下还是离开
- 如果用户点击停留,应该将他们引导至新页面
- 如果用户点击离开,window 应该关闭
我目前有以下代码:
var timeout;
$(window).on('beforeunload', function (){
timeout = setTimeout(function() {
alert('You stayed');
window.location.href = 'desktop/salvage';
}, 1000);
return "You save some unsaved data, Do you want to leave?";
});
function noTimeout() {
alert("You're leaving!");
clearTimeout(timeout);
}
window.unload = noTimeout;
警报 运行 正确,但如果用户单击停留,则尝试导航到另一个页面 运行s beforeonload 再次提示您。这会陷入无限循环,直到您决定离开该页面,然后您将导航到您应该导航到的页面,如果您选择 'stay'。
当您确实希望将用户重定向到另一个页面时,使用布尔标志来阻止警报:
var timeout;
var redirecting = false;
$(window).on('beforeunload', function (){
if (redirecting) { return; }
timeout = setTimeout(function() {
alert('You stayed');
redirecting = true;
window.location.href = 'desktop/salvage';
}, 1000);
return "You save some unsaved data, Do you want to leave?";
});
function noTimeout() {
alert("You're leaving!");
clearTimeout(timeout);
}
window.unload = noTimeout;
我需要一种方法来执行以下操作:
- 当用户点击退出 window 时,应该询问他们是想留下还是离开
- 如果用户点击停留,应该将他们引导至新页面
- 如果用户点击离开,window 应该关闭
我目前有以下代码:
var timeout;
$(window).on('beforeunload', function (){
timeout = setTimeout(function() {
alert('You stayed');
window.location.href = 'desktop/salvage';
}, 1000);
return "You save some unsaved data, Do you want to leave?";
});
function noTimeout() {
alert("You're leaving!");
clearTimeout(timeout);
}
window.unload = noTimeout;
警报 运行 正确,但如果用户单击停留,则尝试导航到另一个页面 运行s beforeonload 再次提示您。这会陷入无限循环,直到您决定离开该页面,然后您将导航到您应该导航到的页面,如果您选择 'stay'。
当您确实希望将用户重定向到另一个页面时,使用布尔标志来阻止警报:
var timeout;
var redirecting = false;
$(window).on('beforeunload', function (){
if (redirecting) { return; }
timeout = setTimeout(function() {
alert('You stayed');
redirecting = true;
window.location.href = 'desktop/salvage';
}, 1000);
return "You save some unsaved data, Do you want to leave?";
});
function noTimeout() {
alert("You're leaving!");
clearTimeout(timeout);
}
window.unload = noTimeout;