【发布时间】:2012-04-09 09:36:04
【问题描述】:
当用户切换到 IPhone 上的另一个窗口时,有没有办法看到浏览器窗口最小化?当浏览器窗口通过切换到任何其他应用程序变为非活动状态时也是如此。
我尝试绑定到 jQuery onfocus、onblur 事件 ($(window).blur(...);) 但没有回调。
谢谢!
【问题讨论】:
标签: javascript jquery iphone safari mobile-safari
当用户切换到 IPhone 上的另一个窗口时,有没有办法看到浏览器窗口最小化?当浏览器窗口通过切换到任何其他应用程序变为非活动状态时也是如此。
我尝试绑定到 jQuery onfocus、onblur 事件 ($(window).blur(...);) 但没有回调。
谢谢!
【问题讨论】:
标签: javascript jquery iphone safari mobile-safari
我认为与您正在寻找的最接近的是pageshow and pagehide events。在我在 iOS 5.1 中进行的测试中,当双击主页按钮后从 Mobile Safari 切换到另一个应用程序时,pagehide 事件似乎在应用程序实际切换之前立即被触发,而如果我只按一次主页按钮回到主屏幕,似乎 JavaScript 线程立即暂停,只有当 Mobile Safari 再次成为焦点时才会调用事件的侦听器。
这是您监听事件的方式:
window.addEventListener('pageshow', myPageShowListenerFunc, false);
window.addEventListener('pagehide', myPageHideListenerFunc, false);
【讨论】:
对于更高版本的 iOS pageshow 和 pagehide 不再可靠运行。但是,您现在可以使用visibilitychange 事件,该事件在用户打开另一个浏览器选项卡或浏览器最小化(通过按下主页按钮)时触发。
所以你的代码看起来像
window.addEventListener('visibilitychange', myVisibilityHandleFunc, false);
或使用 jQuery
$(document).on('visibilitychange', myVisibilityHandleFunc);
来自MDN:
Page Visibility API 让您知道网页何时可见或处于焦点位置。使用选项卡式浏览,任何给定网页都有可能位于后台,因此对用户不可见。当用户最小化网页或移动到另一个选项卡时,API 会发送有关页面可见性的 visibilitychange 事件。
有一个名为document.webkitHidden 的属性可用于iPhone,以了解更改是可见的-> 隐藏的,还是隐藏的-> 可见的。
【讨论】: