我已经在网上调查了大部分问题,但这仍然让我感到困惑....
我的问题是,如何在手机浏览器中检测网站标签的隐藏/离开事件,我的情况是不关于关闭标签(例如按下右上方的X按钮或左上角,以及不关于直接关闭整个移动浏览器应用程序。
(之前,我有一个网页,其中连接了websocket以接收编码的音频内容,然后使用AudioContext
播放声音)
以下是我遇到过的两种情况。
当我按下HOME按钮并隐藏移动浏览器应用程序时。
- 醇>
当我点击iPhone的Messenger应用程序或Facebook应用程序中的网址时,按“返回”按钮返回。
url链接在Facebook直接制作的应用内浏览器中打开,当我按下左上角的后退按钮时,视图会跳回到Messenger窗口或Facebook时间线。
在这两种情况下,我已经听过beforeunload
(以及iOS的pagehide
事件),但是没有一个被捕获。我发现websocket连接仍在连接,音频仍在播放。似乎整个页面仍在某个地方运行(但你看不到)。我也试着听一个div :visible
,但是当我按下主页按钮或离开facebook应用内浏览器时,它仍然给我true
。
还有什么方法可以检测出这两种情况吗?我想关闭流声音并关闭websocket连接。
答案 0 :(得分:2)
刚刚找到答案......
页面可见性API https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API