我正在使用mvc3构建一个网站,我只需要在应用程序关闭时删除数据库中的数据。 (用户点击红色x)。
我尝试使用onbeforeunload事件使用javascript,但每次进入应用程序的新页面时都会发生此事件。
是否可以检测用户何时关闭窗口?
答案 0 :(得分:6)
这是不可能的。但是,你可以做的是有一个小的javascript块,每隔 n 分钟/秒进行ajax调用,告诉服务器用户仍然打开浏览器。
这样,您可以设置一个超时,表示如果在5分钟后我们没有收到用户的回复,我们可以删除数据库中的数据(或者您需要执行的任何操作)。
要实现超时逻辑,有两个选项:
您有一个单独的服务(控制台应用程序或Windows服务)在某个时间间隔运行,检查是否有任何用户的超时大于某个值。如果是,则执行您需要的任何操作。
如果任何用户执行了一个已被阻止的操作,您首先要检查是否有任何用户仍将其激活(超时值大于当前时间)。如果有,则阻止用户,如果没有,则可以删除旧的超时值,因为它已过期。
答案 1 :(得分:3)
在window.unload事件中使用同步ajax请求。
当用户转到其他页面,或关闭或刷新时,此事件将会触发。您可以在Web应用程序上调用服务,通知用户不再编辑文档
经过非常快速的谷歌,我看到了这个片段here
$(window).unload(function() {
$.ajax({
url: 'resetTheDocument?id=whatever',
async: false,
cache: false,
type: "POST",
data: "My work here is done"
});
});
答案 2 :(得分:1)
早上好,您可以尝试将您的逻辑添加到Session_End方法中的global.asax文件中,以删除数据库中的记录。