如题。
我想要页面关闭后执行一个ajax,使用过window.onunload()但好像没有执行呢。请教了
需要在谷歌下实现这样的功能
楼主必须要这样吗?
可以谈谈你的需求?
这样,页面关闭要执行的代码,能不做,就不做。
打算在页面关闭时更改用户的登录状态
类似与聊天室那样
@枼秋: 关于聊天室,可以用flash socket来实时的显示用户是否在线(个人的想法),当然你的现在的肯定不是聊天室。
个人的想法是:
你可以写个全局的js ajax方法,让每个页面都可以用到这个js,(这个很简单)
这个ajax的方法就是 定时的发送一个请求到服务器端,告知这个用户还在活跃的状态,(就是最简单的我们打开着这个页面,一动也不动 ,也算是这个人还在线)。
后台可以有一个字段来,或者是记录还会记录这个人最近在线的时间。
这个时候有个问题,就是用户关闭了游览器,此时就没有定时的ajax请求到服务器了,也就是用户离线了,但是,也就是那个online字段不能有1->0
你可以在服务器端写个定时的services来定时的扫描用户,假定一个过期的时间,比如10分钟还没有动,就认为这个用户已经离开。
@chenping2008: 好想法,我试试
@chenping2008: 这里有个小问题哦,就是服务器端的定时扫描应该怎么做?
window.onbeforeunload = function () {
if (event.clientY < 0 || event.altKey) {
//ajax代码
}
}
window.onbeforeunload = function () { if (event.clientY < 0 || event.altKey) { $.ajax({ url:"<%:Url.Action("OutLogin","Home") %>" }) } }
我有试过这样但是不好使,我用的谷歌游览器
@枼秋:
如果你不涉及到刷新操作的话,这样可以
window.onbeforeunload = function () {
//ajax
}
你的需求“打算在页面关闭时更改用户的登录状态”……
非法关闭窗体一些js事件是不能获取到的,能不能在后台做呢?Session_start与Session_end事件
参考:http://hi.baidu.com/yyq745201/item/62e26b189f30f712e2f98626
会话开始和会话结束是怎么实现执行代码的?web.config中的配置那一部分没看明白
@枼秋:
web.config只需要清楚这一处
<system.web>
<sessionState mode ="InProc" timeout ="20" />
</system.web>
1、只有在 Web.config 文件中的 sessionstate 模式设置为InProc 时,才会引发 Session_End 事件。
2、timeout 标识若20分钟还没有进行客户端到服务器的通信,就视为已关闭,即触发Session_End 事件。
Session_start 是当你第一次访问一个网页时发生,创建的专属会话
Session_end 是会话结束时触发。主动调用Session.Abandon();或会话超时时执行
事件执行更详细请看:http://hi.baidu.com/5264270/item/dd925b0bc9f59eea3599021e
这个办法可行