2016-11-06 191 views
10

我正在实现一个javascript计时器,该计时器会在iframe中加载,并且该计时器也会以一定的时间间隔播放一些音频文件,基本上它用于例行演习,因此说10秒钟有第一个练习,然后第二个1分钟,第二个1分钟,等等。使用javascript阻止Safari进入睡眠状态

随着锻炼时间的完成和下一个锻炼时间的增加,我改变了特定练习的音频等等。我想要的是防止浏览器在手机(android,iOS),笔记本电脑等各种模式下休眠,直到定时器运行时为止。

我已经使用了2个ios解决方案我正在使用重新加载页面和其他人是否是Android或笔记本电脑我正在尝试视频here

而我最终的代码来检查的事情是

var ua = { 
    Android: /Android/ig.test(navigator.userAgent), 
    // iOS: /AppleWebKit/.test(navigator.userAgent) && /Mobile\/\w+/.test(navigator.userAgent) 
    iOS:/iPhone|iPad|iPod/i.test(navigator.userAgent) 
}; 

<script type="text/javascript" src="js/sleep.js"></script> 

if (ua.iOS) { 
    preventIosSleep = setInterval(function(){ 
    window.top.location.href = '/'; 
    setTimeout(function(){ 
     try { 
     window.top.stop(); 
     } catch (exception) { 
     document.execCommand('Stop'); 
     } 
    }, 0); 
    }, 10000); 
} else { 
    sleep.prevent(); 
} 

// and when releasing the things 
if (ua.iOS) { 
    clearInterval(preventIosSleep); 
} else { 
    sleep.allow(); 
} 

的sleep.js从连杆作为上述告知。现在一直在尝试大约一周的时间。除了MAC上的Safari浏览器之外,此解决方案适用于所有浏览器。任何人都可以告诉我如何停止Safari浏览器不进入睡眠模式。

+2

你不能........你是在浏览器的摆布。 –

+0

你的“最终代码来检查事情”有'AppleWebKit' regex注释掉了,所以'ua.iOS'甚至不会在macOS上检测到Safari。你至少证实你可以在macOS上检测到Safari吗? –

回答

6

过去,您已经能够进行黑客攻击,例如在网页上添加音频标签或在隐藏的iframe中重新加载网址。但是这些工作都不适用于iOS 7.唯一可行的解​​决方案是创建一个使用UIWebView的应用程序。

以下是因为如果你有兴趣的其他信息:https://stackoverflow.com/a/7477438/1640090

+0

这就是问题所在,我已经看过那个链接。 –

+0

所以总体而言,这样做是不可能的。所以如果其他人尝试他们可以得到一些帮助。 –

2

我建议,如果你正在寻找设备级控制创建科尔多瓦的应用程序。我相信你希望在浏览器中完成的事情类型是Apple主动阻止的事情;可能是因为电池寿命和/或设备安全性原因。

如果你走这条路线,你可以使用: https://github.com/EddyVerbruggen/Insomnia-PhoneGap-Plugin

希望它能帮助。

+0

如果你可以检查我的问题,事情正在设备上工作,但不适用于mac safari。所以,如果你能帮上忙。 –

相关问题