如果你通过http://jsbeautifier.org/运行缩小的脚本,你就会知道这个 hack 是如何工作的。
hack 的思路如下:如果在 safari 中请求新页面,则 ios 设备将重置睡眠超时。
知道了这一点,我们可以设置一个间隔,每 30 秒左右请求一个新页面:
iosSleepPreventInterval = setInterval(function () {
window.location.href = "/new/page";
}, 30000);
现在我们需要停止请求,这样页面就不会被重定向:
iosSleepPreventInterval = setInterval(function () {
window.location.href = "/new/page";
window.setTimeout(function () {
window.stop()
}, 0);
}, 30000);
现在每 30 秒会有一个页面请求,因此 ios 设备不会进入睡眠状态,并且请求将被取消,因此您不会离开页面。
注意:我将此代码用于“/new/page”:
sleep(10);exit;
这个 hack 已经在 iOS 6 和 iOS 7 上测试过了。你可以在 jsBin 上自己测试。
注意 2:Android 使用不同的 hack 来防止设备进入睡眠状态。