直接关闭浏览器的时候怎么获得下线的时间

caoli1988113 2009-01-17 10:59:46
直接点X关闭浏览器,或者突然断电的情况下,怎么获得下线时间,在线等!急急急.........
...全文
283 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
findphper 2010-12-22
  • 打赏
  • 举报
回复
B)如果网站要求此种情形不应该算下线,那么 1)session不设过期,2)客户端定时ajax刷新在线状态,或者等客户端跟服务端交互数据时ajax刷新在线状态。

[Quote=引用 16 楼 findphper 的回复:]
既然你觉得你的定义很有效,那我问你:我打开一个页面后,放在那里,持续一天什么都不干,你算我离线还是在线? 根本问题要看网站需求了。A)如果网站要求此种情形应该算下线,只有两个方法:1)服务端设置session期限,只要客户端没有触发刷新服务端session,那么session过期后就下线了;2)或者,不用session, 但在客户端用ajax定时发送数据到服务端,一旦服务端收不到定时ajax信息,……
[/Quote]
findphper 2010-12-22
  • 打赏
  • 举报
回复
补充:ajax不一定要做成定时的,可以在客户端跟服务端交互数据时才ajax刷新状态

[Quote=引用 16 楼 findphper 的回复:]
既然你觉得你的定义很有效,那我问你:我打开一个页面后,放在那里,持续一天什么都不干,你算我离线还是在线? 根本问题要看网站需求了。A)如果网站要求此种情形应该算下线,只有两个方法:1)服务端设置session期限,只要客户端没有触发刷新服务端session,那么session过期后就下线了;2)或者,不用session, 但在客户端用ajax定时发送数据到服务端,一旦服务端收不到定时ajax信息,……
[/Quote]
findphper 2010-12-22
  • 打赏
  • 举报
回复
既然你觉得你的定义很有效,那我问你:我打开一个页面后,放在那里,持续一天什么都不干,你算我离线还是在线? 根本问题要看网站需求了。A)如果网站要求此种情形应该算下线,只有两个方法:1)服务端设置session期限,只要客户端没有触发刷新服务端session,那么session过期后就下线了;2)或者,不用session, 但在客户端用ajax定时发送数据到服务端,一旦服务端收不到定时ajax信息,也就下线了。 B)如果网站要求此种情形不应该算下线,那么就不能使用session,而只能用上述的客户端定时ajax。


[Quote=引用 11 楼 sp1234 的回复:]
如果你是一个产品经理(而不是普通的程序员),那么web开发中“获得下线时间”这个任务定义如果以你的那种方式定义就会浪费很多时间和开发费,因为它不是从实际需求出发。在web开发中,获得下线时间的基础是:如果用户在浏览器地址栏或者通过其它任意方式导航到别的网站,例如我在当前这个页面操作之后直接在地址栏上打入地址访问淘宝网站去了,只要这样操作之后不出1分钟,网站后台就应该可以反映出此用户下线了。这有这样……
[/Quote]
Robin 2009-01-17
  • 打赏
  • 举报
回复
掉线无法知道下线的时间

只能用session_end
dd__dd 2009-01-17
  • 打赏
  • 举报
回复
如果是断电用onunload确实是获取不了,还是得用Session_End
hack8 2009-01-17
  • 打赏
  • 举报
回复
上述的方法都是变通的方法,而现在的确是没有可以直接解决LZ问题的办法。
dd__dd 2009-01-17
  • 打赏
  • 举报
回复

function meizzToday() //Today
{
var meizzTheYear = new Date().getFullYear();
var meizzTheMonth = new Date().getMonth()+1;
var meizzTheDate = new Date().getDate();
var meizzTheHour = new Date().getHours();
var meizzTheMinute = new Date().getMinutes();
var meizzTheSecond = new Date().getSeconds();
var meizzTheSecond = new Date().getSeconds();
var time="";
if (meizzTheMonth<10 && meizzTheMonth.length<2) //格式化成两位数字
{
meizzTheMonth="0"+meizzTheMonth;
}
if (meizzTheDate<10 && meizzTheDate.length<2) //格式化成两位数字
{
meizzTheDate="0"+meizzTheDate;
}
time= meizzTheYear + "-" + meizzTheMonth + "-" +
meizzTheDate + " " + meizzTheHour + ":" +
meizzTheMinute + ":" + meizzTheSecond;

alert(time);
}

<body onunload="meizzToday()">
popeyepower 2009-01-17
  • 打赏
  • 举报
回复
如果浏览器是报错关闭或者跟楼主说的一样, 突然断电, 楼上两位这个办法是接收不到的.

保险的做法是既要用楼上两位的办法. 也要用服务端的session_End事件.

或者你可以就用楼上两位的办法, 对于接收不到下线消息的情况, 你定义为非正常关闭. 也就是说比如说从上线开始到下线,超过了24小时, 一律视为非正常关闭.
bj890 2009-01-17
  • 打赏
  • 举报
回复
shenme?
阿云ivan 2009-01-17
  • 打赏
  • 举报
回复
在global文件里,试试写session_end事件的处理代码
jiang_jiajia10 2009-01-17
  • 打赏
  • 举报
回复

<body onunload="alert('The onunload event was triggered')">

GkfSyser 2009-01-17
  • 打赏
  • 举报
回复
关闭浏览器你可以<body onUnload="onclose()" > 然后在onclose里用AJAX和服务端传消息来实现,但是这个事件刷新的时候
也会触发,你需要进行判断,断电无法弄!
yanrabbit163 2009-01-17
  • 打赏
  • 举报
回复
果然厉害,楼主的这个思路是有问题,如果用户打开网站后一直不关闭,那算在线,还是下线呢?
beckfun 2009-01-17
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 sp1234 的回复:]
如果你是一个产品经理(而不是普通的程序员),那么web开发中“获得下线时间”这个任务定义如果以你的那种方式定义就会浪费很多时间和开发费,因为它不是从实际需求出发。在web开发中,获得下线时间的基础是:如果用户在浏览器地址栏或者通过其它任意方式导航到别的网站,例如我在当前这个页面操作之后直接在地址栏上打入地址访问淘宝网站去了,只要这样操作之后不出1分钟,网站后台就应该可以反映出此用户下线了。这有这样,才是…
[/Quote]
说的在理!
renfei0730 2009-01-17
  • 打赏
  • 举报
回复
牛叉
  • 打赏
  • 举报
回复
这有两个条件:一方面,不是什么点叉子管理浏览器 --> 这有两个条件:一方面,不是什么点叉子关闭浏览器

这在开发中是一个相当多余的任务定义。
  • 打赏
  • 举报
回复
如果你是一个产品经理(而不是普通的程序员),那么web开发中“获得下线时间”这个任务定义如果以你的那种方式定义就会浪费很多时间和开发费,因为它不是从实际需求出发。在web开发中,获得下线时间的基础是:如果用户在浏览器地址栏或者通过其它任意方式导航到别的网站,例如我在当前这个页面操作之后直接在地址栏上打入地址访问淘宝网站去了,只要这样操作之后不出1分钟,网站后台就应该可以反映出此用户下线了。这有这样,才是通用的(可以处理很多情况的)用户在线/离线检测机制。这有两个条件:一方面,不是什么点叉子管理浏览器,跟浏览器没有关系,只要是不访问服务器一定时间就自动判断为下线了;另一个条件是应该在用户下线1(或者最多2)分钟内就及时反映用户下线,而不是等到几十分钟以后。

重新组织你的需求描述,做出的东西会更通用,较少浪费时间。
caoli1988113 2009-01-17
  • 打赏
  • 举报
回复
用session_end直接关闭X,程序不会运行到Session_end来

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧