使用javascript

时间:2016-11-06 20:14:42

标签: javascript safari

我正在实现定时器在iframe中加载的javascript计时器,并且该计时器还会以一定的间隔播放一些音频文件,基本上它是用于常规练习所以说10秒钟有第一次练习然后是一分钟第二次练习第二个等等2分钟,等等。

当练习的时间结束并且下一个练习结束时,我会更改该特定练习的音频,依此类推。我想要的是阻止浏览器在手机(Android,iOS),笔记本电脑的每个模式中睡眠,直到计时器运行。

我使用了ios的2个解决方案,我正在使用它来重新加载页面,对于其他人,无论是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 :(得分:6)

过去,您可以执行黑客操作,例如在页面上添加音频标记或在隐藏的iframe中重新加载网址。但是,从iOS 7开始,这些都不起作用。唯一可行的解​​决方案是创建一个使用UIWebView的应用程序。

以下是您感兴趣的其他信息:https://stackoverflow.com/a/7477438/1640090

答案 1 :(得分:2)

如果您正在寻找设备级控制,我建议您创建一个cordova应用程序。我相信你希望在浏览器中实现的类型是Apple积极阻止的东西;可能是因为电池寿命和/或设备安全原因。

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

希望它有所帮助。