3

有没有办法在用户切换到iPhone上的另一个窗口时看到浏览器窗口被最小化?当浏览器窗口通过切换到任何其他应用程序变为非活动状态时也是如此。

我试图绑定到 jQuery onfocusonblur事件($(window).blur(...);),但没有回调。

谢谢!

4

2 回答 2

6

我认为最接近你正在寻找的东西是pageshowpagehide事件。在我在 iOS 5.1 中进行的测试中,当双击主页按钮后从 Mobile Safari 切换到另一个应用程序时,该pagehide事件似乎在应用程序实际切换之前立即被触发,而如果我只按一次主页按钮即可到达主屏幕似乎 JavaScript 线程立即暂停,并且仅当 Mobile Safari 再次成为焦点时才调用事件的侦听器。

这是您监听事件的方式:

window.addEventListener('pageshow', myPageShowListenerFunc, false);
window.addEventListener('pagehide', myPageHideListenerFunc, false);
于 2012-04-09T14:07:21.270 回答
4

对于更高版本的 iOS pageshowpagehide不再可靠工作。但是,您现在可以使用该visibilitychange事件,该事件在用户打开另一个浏览器选项卡或浏览器最小化(通过按下主页按钮)时触发。

所以你的代码看起来像

window.addEventListener('visibilitychange', myVisibilityHandleFunc, false);

或使用 jQuery

$(document).on('visibilitychange', myVisibilityHandleFunc);

来自MDN

Page Visibility API 让您知道网页何时可见或处于焦点位置。使用选项卡式浏览,任何给定网页都有可能在后台,因此对用户不可见。当用户最小化网页或移动到另一个选项卡时,API 会发送有关页面可见性的 visibilitychange 事件。

有一个名为的属性document.webkitHidden可用于 iPhone,以了解更改是可见的 -> 隐藏的,还是隐藏的 -> 可见的。

于 2015-07-24T16:34:37.690 回答