我的网站上有一些页面允许用户创建和编辑帖子。当用户在这些页面上时,我想在离开页面之前警告他们。我可以这样做:
//Only warn if user is on a New or Edit page
if(window.location.href.indexOf("/new") !== -1 || window.location.href.indexOf("/edit") !== -1 {
window.addEventListener('beforeunload', function (e) {
e.preventDefault();
e.returnValue = '';
});
//Doing this again because I don't know which version is compataible with all browsers
window.onbeforeunload = function (e) {
e.preventDefault();
e.returnValue = ''
};
};
在 New
或 Edit
页面上,form
中的信息使用 JQuery ajax
提交到服务器>。服务器返回一个 URL,用户被重定向到该 URL 以查看他们的帖子/更新的结果,如下所示 window.location.href = result;
其中 result
是发送的 URL从服务器返回。
当该代码运行进行重定向时,用户会收到警告,告知他们将要离开他们所在的页面。我不希望它在用户未执行的任何重定向/导航上执行此操作。在这种情况下如何停止/删除警告?
更新:这不是重复的。这个问题询问如何防止 beforeunload
事件发生在用户未请求自己离开页面的重定向上。
最佳答案
因为您可能希望在某些情况下绑定(bind)事件而不是同一 window
中的其他情况,所以您不仅需要将事件处理程序添加到 window
,但是您也必须将其删除(在适当的情况下),因为即使您正在更改 window
中加载的 document
的 URL,您也没有更改窗口
本身:
function handleBeforeUnload (e) {
e.preventDefault();
e.returnValue = '';
}
//Only warn if user is on a New or Edit page
if(location.href.indexOf("/new") !== -1 || location.href.indexOf("/edit") !== -1 {
window.addEventListener('beforeunload', handleBeforeUnload);
} else {
// Remove the previously registered event handler (if any)
window.removeEventListener('beforeunload', handleBeforeUnload);
}
关于javascript - 如何在离开页面之前警告用户而不是重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55716197/