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