【问题标题】:Close browser/Exit from website Events关闭浏览器/从网站退出事件
【发布时间】:2011-03-16 17:26:05
【问题描述】:

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

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

  2. 2 名玩家在一个房间里玩,其中一人离开,所以游戏结束,留下的人获胜。 在这种情况下,我可以使用玩家回合的倒数计时器,当倒数计时器达到 0 - 其他玩家获胜时, 但我更喜欢玩家一离开房间就会出现消息, 速度更快,当倒计时到 0 时,有两种可能性 - 玩家离开或玩家没有及时做出反应。

谁能告诉我如何知道用户何时关闭浏览器或退出我的网站? 因为据我所知, Session 对象不会有效,因为 Session_End 方法会在浏览器关闭或用户 AFK 后运行几分钟, 我不能让 Session_End 关闭 AFK 玩家的房间,因为他们正在等待更多玩家加入,我需要立即触发我的事件。

PS:我找到了这种方法,我不知道它是否有效,但我认为它不符合我的需求,因为即使用户从我的网站移动到另一个网站,我也需要触发该事件。

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

【问题讨论】:

    标签: events browser web exit


    【解决方案1】:

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

    在事件处理程序中,您会向服务器进行回调,告知会话已关闭。请注意,这必须是一个带有 crumb 的经过身份验证的调用,以避免 XSRF(即玩家 B 欺骗玩家 A 结束他的会话)。

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

    【讨论】:

      【解决方案2】:

      处理onbeforeunload 可能会起作用。

      【讨论】:

        猜你喜欢
        • 2012-06-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-03
        相关资源
        最近更新 更多