3

当用户到达我的页面时,我正在尝试发布数据。这适用于 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, 
      });

});
4

1 回答 1

2

没有一个好的方法,因为这不是应该如何onbeforeunload使用的。

正确的使用方法onbeforeunload是侦听此事件,然后卸载您可能正在使用的任何数据或资源,因为用户正在离开页面。你不应该用它来尝试开始新事物。根据HTML5 规范 showModalDialog(), alert(),confirm()prompt()是明确不允许的,其目的是让您有时间清理任何事件处理程序、网络工作者和其他东西。

如果定义了事件处理程序,则可能会向用户显示一个页面,"Are you sure you want to leave?"但出于安全原因,该表单通常无法自定义,但这取决于浏览器。

您最好将数据设置在 cookie 中或可以快速完成且仅在浏览器中发生的其他内容中,然后在下一页加载时查找该数据。

于 2013-06-18T13:49:41.080 回答