当用户切换到iPhone上的其他窗口时,有没有办法看到浏览器窗口被最小化?

时间:2012-04-09 09:36:04

标签: javascript jquery iphone safari mobile-safari

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

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

谢谢!

2 个答案:

答案 0 :(得分:6)

我认为最接近你要找的是pageshow and pagehide events。在我在iOS 5.1中进行的测试中,当双击主页按钮后从Mobile Safari切换到另一个应用程序时,pagehide事件似乎在应用程序实际切换之前立即被触发,而如果我按下主页按钮一旦进入主屏幕,似乎JavaScript线程立即被暂停,只有当Mobile Safari再次成为焦点时才会调用该事件的监听器。

这是您倾听事件的方式:

window.addEventListener('pageshow', myPageShowListenerFunc, false);
window.addEventListener('pagehide', myPageHideListenerFunc, false);

答案 1 :(得分:2)

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

所以你的代码看起来像

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

或使用jQuery

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

来自MDN

  

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

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