我正在尝试写一些代码来保持手机的活力,而不是在网页上打瞌睡。
在我的搜索中,我找到了这篇文章:Prevent iOS mobile safari from going idle / auto-locking / sleeping?
但是,循环音频文件似乎不再能让MobileSafari保持活力,也不能防止手机锁定。当强制页面每30秒刷新一次时,我需要原始页面保持打开状态。
谷歌最新的交互式音乐视频Just A Reflektor似乎阻止了移动设备上的锁,而且他们的JS here引用了一个preventSleepIos函数。
我可以简单地做些什么来防止iOS睡着?
谢谢!
发布于 2013-11-03 21:11:48
如果你通过http://jsbeautifier.org/运行这个简化的脚本,你就会明白这个黑客是如何工作的。
黑客的想法如下:如果在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;
这个破解已经在iOS 6和iOS 7上测试过了。你可以test it yourself on jsBin。
Note2:安卓使用了不同的黑客手段来防止设备休眠。
发布于 2013-09-20 06:09:06
您必须向服务器发出请求,不幸的是,这在严格意义上的HTML或JS中是不可能的。这两种语言都是前端脚本语言,这意味着一旦加载了DOM,使用普通的HTML和CSS操作DOM只会影响前端。
据我所知,防止iOS进入睡眠状态的方法屈指可数,其中一种方法是制作一个玩具应用程序,在iOS中反复获得服务,另一种方法是设置application.idleTimerDisabled = YES
,但这两种解决方案都超出了web前端技术的范围。
如果你想防止会话通过web应用丢失,你可以编写一个便宜的服务器端函数来频繁地ping服务器的时间,以保存用户的会话。
使用javascript和PHP的示例:
function cd(){
var alerttime = "<?php echo date('h:i:s', (strtotime($_SESSION['ordertime']) + (1 * 60))); ?>"
var extratime = "<?php echo date('h:i:s', (strtotime($_SESSION['ordertime']) + (2 * 60))); ?>";
redo();
}
function getTime(){
currenttime = "<?php echo date('h:i:s', time()); ?>";
var cd = setTimeout("getTime()",1000);
}
https://stackoverflow.com/questions/18905413
复制相似问题