如何才能增加“window.OnBeforeUnload”成功发送Ajax ping?

时间:2011-06-30 01:50:30

标签: javascript ajax cross-browser fire-and-forget

我已经在SO上阅读了几十个问题和答案,但没有一个能回答我的特定问题...他们中的大多数都围着弹出一个“哦,你需要保存”的信息...这不是我的需要。

我正在办公室(不是公共网站)建立内部使用的应用程序,特别是一个“页面”我们想要记录用户的“退出”。

所以,我有这个简单的陈述:

window.onbeforeunload = function () {
    $.post('LogExit.aspx');
}

现在,由于浏览器“不想”启动新请求,因此post大部分时间都会失败,因为它知道该页面正在消失...但是,如果我添加一个烦人的{ {1}}框,然后它将100%的时间发送ping !!!

示例:

alert

所以,我的问题是......我如何确保(或至少增加“LogExit.aspx”ping通过的机会?

2 个答案:

答案 0 :(得分:1)

由于您必须提出某种请求并且并不真正关心响应,因此在这种情况下您可以使用图像:

window.onbeforeunload = function () {
   var img= new Image();
   img.src = "LogExit.aspx";
   // you have to check on your server to see if it worked :)
}

答案 1 :(得分:0)

不幸的是,没有100%,甚至10%“保证”的方式来实现这一目标......因此,我能够通过every-10-seconds-send-a-ping功能来解决我的特殊需求。

由于我需要记录一个人查看特定页面的时间长度,因此上述解决方案有助于至少将其缩短到10秒的精确度窗口。

我真的希望将来会有一个更好的解决方案。