【发布时间】:2013-12-24 03:00:32
【问题描述】:
我希望检查页面是否已使用 jQuery 或 javascript 刷新或关闭。
我目前有一些数据库值,如果用户导航离开或刷新页面,我想删除这些值。
我正在使用 AJAX 调用来删除这些值。
现在,我有以下代码:
处理程序:
window.beforeunload = cleanUp;
cleanUp() 方法:
function cleanUp() {
// Check to see if it's an actual page change.
if(myActualLeave) {
$.ajax({
type: "POST",
url: "/api/cleanup",
data: { id: myLocalId },
success: function (data) {
console.log(myLocalId + " got removed from the database.");
}
});
}
// Reset the flag, so it can be checked again.
myActualLeave = true;
}
myActualLeave 是我在进行 AJAX 调用时设置为 false 的标志,因此它们不会触发 beforeunload 处理程序。
我遇到的问题是,当我单击页面上的链接时,例如指向 Google 的链接,window.beforeunload 不会触发。我可能对此有误解,但我也尝试过使用 jQuery 的 $(window).unload(...); 和 onbeforeunload 触发器。
在以下情况下我应该使用什么来调用javascript:
- 用户刷新页面,
- 当用户离开页面时,或
- 用户何时关闭页面?
编辑:它出现在我可以使用click() jQuery 处理程序来检测导航离开的评论中。我应该更具体一点,我并不是说当用户单击链接时才希望它触发。我希望它在他们以任何方式更改页面时触发。因此,例如,如果输入地址栏。
【问题讨论】:
-
离开你可以在
$('a').click()上调用一个函数。或者向所有外部链接添加一个类并在这些链接上调用它。我认为卸载会在刷新和关闭时起作用? -
我将编辑我的问题以包括这个,因为我没有,但是当我说导航离开时,我的意思不仅仅是一个链接。就像用户在地址栏中输入内容一样。
-
我有一个页面,我使用它:
window.onbeforeunload,我刚刚检查过,当我输入 URL、单击返回、关闭或单击链接时,它会提示我。它在您的所有要求下触发。 -
您是否考虑过在 PHP 中使用会话,而不是使用 JavaScript?如果他们的会话处于活动状态,您可能希望使用 JavaScript 设置一个 cookie 并每 10 秒更新一次。这将是解决此问题的更好方法。
-
@Enijar 我对 PHP 会话了解不多,但我对 web.py 会话了解。是不是很像我可以做这样的事情。你有资源可以指点我吗?
标签: javascript jquery ajax