现在我正在使用ASPX,CSS和AJAX创建浏览器游戏。 我需要知道用户何时关闭浏览器或退出网站, 因为这些情况例如:
如果玩家打开游戏室而不是关闭浏览器或退出网站, 这个房间需要立即删除。
2个玩家在一个房间里玩,而且其中一个玩家离开,所以游戏结束了,剩下的就是赢家。 在这种情况下,我可以使用玩家回合的倒数计时器,当倒数计时器达到0时 - 另一个玩家获胜, 但是我希望玩家离开房间时会立即显示该消息, 它的速度更快,当倒计时达到0时,有2种可能性 - 玩家离开或者玩家没有及时做出反应。
任何人都可以告诉我如何知道用户何时关闭浏览器或退出我的网站? 因为据我所知,Session对象不会有效,因为Session_End方法在浏览器关闭或用户为AFK几分钟后运行, 而且我不能让Session_End关闭AFK球员的空间,因为他们正在等待更多球员加入,我需要立即解雇我的赛事。
PS:我发现了这种方法,我不知道它是否有效,但我认为它不符合我的需要,因为即使用户从我的网站移动到另一个网站,我也需要触发事件。Ext.EventManager.on(window, 'beforeunload', function() {
alert('cross-exit tab click AND cross-exit browser click');
});
答案 0 :(得分:1)
处理onbeforeunload
可能会奏效。
答案 1 :(得分:1)
onbeforeunload
事件在用户离开页面之前触发。当用户关闭浏览器或选项卡或转到另一个页面时,即使该页面位于您自己的网站上,也会触发此操作。
在事件处理程序中,您将回拨给服务器,说明会话已关闭。请注意,这必须是带有碎屑的经过身份验证的调用以避免XSRF(即,玩家B欺骗玩家A结束其会话)。
唯一需要注意的是它不适用于Opera。对于opera,您可以使用onunload
事件,但由于这在浏览器关闭时触发,因此很难在此事件处理程序中将任何内容发送回您的服务器。