【发布时间】:2013-06-14 16:19:37
【问题描述】:
当用户到达我的页面时,我正在尝试发布数据。这适用于 chrome 和资源管理器,也适用于 firefox,但是,在 firefox 上,奇怪的是,它只有在用户关闭页面时才有效。如果他们回去,或者去另一个站点(通过键入地址栏或 whaever)它不会发布数据。我的问题是,使用 onbeforeunload 发布数据的正确方法是什么?
$(window).bind('beforeunload', function () {
$.post("track.php", {
async: false,
ip: ip,
referer: referer,
clicks: kactane2,
scrolls: kactane,
time: time,
refid: refid,
country: country,
});
});
【问题讨论】:
-
没有正确的方法,如果幸运的话,ajax调用会在浏览器有时间重定向之前发生,如果没有,它不会,并且在IE中它通常会重定向之前数据可以发送了。
-
可能从onbeforeunload返回字符串
-
@user198989 因为它不会也不会像您期望的那样工作。你最好不要全部使用它。
-
真的没有什么可以让自己更“幸运”。几年前,一个简单的 while 循环可能会延迟足够长的时间,但现代浏览器杀死了它。
-
我记得另一个问题(目前找不到)想要跟踪人们在页面上停留的时间,并会在
beforeunload事件上通过 AJAX 发送该数据,但遇到相同的问题(导致给定会话的某些用户的数据完全丢失)。更好的解决方案之一是定期发送数据,以便数据库至少大部分是最新的。如果这对您的数据有意义,也许您可以实施定期数据发布。
标签: javascript jquery