2010-07-16 71 views
0

现在我正在使用ASPX,CSS和AJAX创建浏览器游戏。 我需要知道当用户从网站关闭浏览器或退出, 因为这些情况下,例如:关闭浏览器/退出网站活动

  1. 如果一个玩家打开一间游戏室,比从网站关闭浏览器或退出, 这个房间需要立即删除。

  2. 2名球员在一个房间里玩,而且他们中的一个人离开了,所以比赛结束了,剩下的人就是胜利者。 在这种情况下,我可以使用玩家轮流的倒数计时器,当倒数计时器达到0时 - 其他玩家获胜, 但我更喜欢消息会在玩家离开房间后立即出现, 其更快,当倒计时达到0时,有两种可能性 - 玩家离开或玩家没有及时做出反应。

任何人都可以告诉我如何知道用户何时关闭浏览器或退出我的网站? ,因为据我所知Session对象将不会有效,因为Session_End方法在浏览器关闭或用户为AFK后几分钟运行,我不能让Session_End为AFK玩家关闭空间因为他们正在等待更多的玩家加入,我需要立即开始我的活动。 P:我发现这种方法,我不知道它的作用,但我不认为它适合我的需要,因为即使用户从我的网站移动到另一个网站时,我也需要该事件发生。

Ext.EventManager.on(window, 'beforeunload', function() { 
    alert('cross-exit tab click AND cross-exit browser click'); 
}); 

回答

1

onbeforeunload事件在用户离开页面之前触发。当用户关闭浏览器或选项卡或转到另一页时,即使该页面位于您自己的网站上,也会触发此事件。

在事件处理程序中,您可以打电话回到服务器,说明会话已关闭。请注意,这必须通过面包屑进行验证呼叫以避免XSRF(即,玩家B欺骗玩家A结束他的会话)。

唯一需要注意的是它不适用于Opera。对于歌剧,您可以使用onunload事件,但因为这会在浏览器关闭时触发,所以在此事件处理程序中很难将任何内容发送回您的服务器。

1

处理onbeforeunload可能会工作。