用户确认"离开页面"时触发javascript功能

pro*_*het 2 javascript jquery

confirmExit()当用户试图离开页面时,我使用下面的代码来激活一个函数:

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

此外:

该页面还会触发AJAX函数以"即时"更新数据库.因此,当用户离开页面时,我需要删除所有"即时"数据.

当用户点击"离开页面"按钮时,是否可以调用javascript函数?

vbo*_*vbo 5

您可以尝试使用window.onunload:

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

window.onunload 只有在用户点击"离开此页面"按钮时才会触发.

如果您想在用户点击"取消"时执行某些操作,可以尝试以下方法:

window.onbeforeunload = function () {
    setTimeout(function () {
        setTimeout(function () {
            console.log("Great decision!");
        }, 200);
    }, 1);
    return "Are you sure?";
}
Run Code Online (Sandbox Code Playgroud)

第一个setTimeout将您的代码放入事件队列.它将在确认框关闭后立即触发.setTimeout如果页面未过早关闭,则会在一段时间后触发第二次.

对于那些正在做XHR的人onunload:确保在页面关闭之前使用同步方法来完成您的请求.如使用async: falsejQuery.ajaxXMLHttpRequest.open(method, url, false)以纯JS.