当用户试图离开页面时,我正在使用以下代码触发confirmExit()
函数:
window.onbeforeunload = confirmExit;
function confirmExit(){
return "Are you sure you want to exit this page?";
}
此外:
该页面还会触发AJAX函数以“即时”更新数据库。因此,当用户离开页面时,我需要删除所有“即时”数据。
当用户点击“离开页面”按钮时,是否可以调用javascript函数?
答案 0 :(得分:5)
您可以尝试使用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)
。