我有一个小网页,可以播放我可以在手机上收听的音乐。页面上的JavaScript设置超时,加载下一首歌曲并在第一首歌曲结束时播放。
当标签处于活动状态时,一切正常。但是在标签变为非活动状态后,超时会继续工作几分钟,然后一旦当前播放的歌曲结束,下一首歌就不会加载或播放。
我认为这是因为Chrome暂停了非活动标签的JavaScript执行,但我不想在播放音乐的整个过程中保持屏幕显示。
我已经使用Chrome移动调试程序调试了代码,方法是设置每500毫秒运行一次的超时,只显示当前日期。一旦屏幕变黑,超时将下降到每1000毫秒一次,这是预期的,但几分钟后,超时完全停止。但是一旦选项卡再次处于活动状态,所有暂停的超时都会激活并运行。
Chrome会将setInterval / setTimeout更改为1000毫秒,但会暂停执行,这会让我的整个页面停止运行。
我尝试过保持标签处于活动状态,经常运行AJAX请求,但这些请求也会暂停。我没有尝试过让JavaScript继续运行。
基本上,有没有办法解决这个问题?有没有办法在屏幕关闭时保持标签处于活动状态?
答案 0 :(得分:9)
没有。出于性能和电池寿命的原因,我们停止对当前未激活的选项卡进行所有处理。与桌面设备相比,这些页面运行的设备受到很大限制,我们需要尊重用户。
我们可以选择在后台播放音乐和音频(当您的屏幕关闭时),但您无法按照自己的需要移动到下一首曲目。