3

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

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

所以,我有这个简单的声明:

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

现在,post由于浏览器不“想要”开始一个新请求,因为它知道页面正在消失,所以大部分时间这将失败......但是,如果我添加一个烦人的alert框,那么它会发送 ping 100 % 的时间!!!

例子:

window.onbeforeunload = function () {
    $.post('LogExit.aspx');
    alert("Ha ha ha, I can delay the browser!");
}

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

4

2 回答 2

1

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

window.onbeforeunload = function () {
   var img= new Image();
   img.src = "LogExit.aspx";
   // you have to check on your server to see if it worked :)
}
于 2011-06-30T02:09:39.067 回答
0

不幸的是,没有 100% 甚至 10% 的“保证”方式来实现这一点……所以,我能够通过一个every-10-seconds-send-a-ping函数来解决我的特殊需求。

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

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

于 2011-07-03T16:39:39.517 回答