如何使用javascript或php检测窗口关闭事件[重复]

Posted

技术标签:

【中文标题】如何使用javascript或php检测窗口关闭事件[重复]【英文标题】:How to detect a window close event using javascript or php [duplicate] 【发布时间】:2012-10-01 23:50:18 【问题描述】:

可能重复:javascript detect browser close tab/close browser

我正在用 php 做一个实时游戏网站,我想在关闭浏览器时调用一个函数,我如何检测使用 php 或 javascript 关闭浏览器?我曾尝试使用 onbeforeunload 和 onunload 事件,但发现即使窗口被刷新或使用后退按钮、前进按钮等进行导航也会触发这些事件。而且这些事件在所有流行的浏览器中都无法正常工作。是否有任何可能的方法来仅检测在所有浏览器中都表现良好的窗口关闭事件?

提前致谢

【问题讨论】:

是关闭那个页面还是关闭整个浏览器? 尝试在***上搜索这个,有几个类似问题的实例。无法检测浏览器关闭事件。我也有类似的挑战。我使用 cronjob 通过检查会话来更新数据库的用户状态(空闲时过期 10 分钟。) 它只是关闭窗口而不是浏览器 @chinju:您介意编辑您的问题描述吗?您要求浏览器关闭事件,现在您只需要关闭窗口/选项卡而不是关闭浏览器...!! 【参考方案1】:

您可以在 PHP 中设置一个会话(带有超时),当您访问该网站时,该会话设置为 1,并且有一个 Ajax 函数每 20 秒运行一次任务,该函数调用一个再次将会话设置为 1 的函数。

当用户关闭浏览器并且 Ajax 调用不再运行时,会话将超时并设置为 0/null。因此,当您重新访问该站点时,会话将为 0,然后您可以重定向/对用户执行您想要的操作。

    setInterval(function()
      $.ajax(
        url: '/',
        success: function()
          //do stuff with data
            //Like send a POST/GET that 
            //if isset sets the session 1 again
        
      );
    , 20000);

【讨论】:

以上是关于如何使用javascript或php检测窗口关闭事件[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 php/ajax/javascript 动态检测蜂窝运营商? [关闭]

如何检测浏览器窗口/选项卡关闭事件?

Javascript/jquery:如何检测在其他窗口或应用链接中加载的页面?

在 UWP Javascript 中,有啥方法可以检测到辅助窗口已关闭?

jsp中如何检测浏览器关闭

当弹出窗口关闭时,我将如何引发事件(jQuery 或 vanilla Javascript)?