在非活动选项卡中新创建的音频元素不起作用

时间:2016-05-18 11:38:53

标签: javascript html5 html5-audio

我有基于网络的音频播放器,想在当前正在播放的同时预加载下一首曲目。 所以我创建了新的音频对象prefetch = new Audio(url),当需要切换时,我只需用预先加载的音频交换当前音频并触发.play()

但是当标签处于非活动状态时,它并不总是有效。有时在交换时我发现了networkState == 3 (NETWORK_NO_SOURCE)readyState = 0 (HAVE_NOTHING)的预取对象。

当我切换回标签时 - 它会立即开始播放。

我相信它是由异步资源选择算法和浏览器优化引起的,但不确定如何使其工作。

(在Safari中大部分可重复)。

1 个答案:

答案 0 :(得分:0)

这是因为浏览器优化。浏览器减少了分配给非活动选项卡的资源,这就是为什么JS工作不正常或根本不工作的原因。

当标签变为无效时,您可以尝试使用没有限制的WebWorkerdocs)。

Check this answer too