当用户尝试离开页面时,我正在使用以下代码来触发confirmExit()函数:

window.onbeforeunload = confirmExit;
function confirmExit(){
    return "Are you sure you want to exit this page?";
}

此外:

该页面还触发AJAX函数来“动态”更新数据库。结果,当用户离开页面时,我需要删除所有“即时”数据。

当用户单击“离开页面”按钮时,是否可以调用JavaScript函数?

最佳答案

您可以尝试使用 window.onunload :

window.onbeforeunload = function () {
    return "Are you sure?";
}
window.onunload = function () {
    console.log("Too bad. Goodbye.");
}

仅当用户单击“离开此页面”按钮时,才会触发window.onunload

如果您想在用户单击“取消”时执行某些操作,则可以尝试以下方法:
window.onbeforeunload = function () {
    setTimeout(function () {
        setTimeout(function () {
            console.log("Great decision!");
        }, 200);
    }, 1);
    return "Are you sure?";
}

第一个 setTimeout 将您的代码放入事件队列。确认框关闭后将被触发。如果页面未关闭太快,第二个setTimeout将在一段时间后触发。

对于正在执行XHR onunload的用户:确保在关闭页面之前使用同步方法来完成您的请求。例如。在async: false中使用jQuery.ajax或在普通js中使用XMLHttpRequest.open(method, url, false)

关于javascript - 用户确认 'Leave Page'时触发javascript函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21478565/

10-14 15:17
查看更多