2014-01-31 50 views
2

我使用下面的代码,当用户试图离开页面火confirmExit()功能:消防javascript函数,当用户确认“离开此页面”

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

此外:

该页面还触发AJAX功能用于“即时”更新数据库。因此,当用户离开页面时,我需要删除所有'即时'数据。

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

+0

你见过这个讨论吗? http://stackoverflow.com/questions/821011/how-do-you-prevent-javascript-page-from-navigating-away – pistacchio

回答

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的人:确保在页面关闭之前使用同步方法完成请求。例如。在普通的js中使用async: falsejQuery.ajaxXMLHttpRequest.open(method, url, false)

+0

@proPhet你尝试我所建议的?也许我需要澄清这一点? – vbo

相关问题