我有基于网络的音频播放器,想在当前正在播放的同时预加载下一首曲目。
所以我创建了新的音频对象prefetch = new Audio(url)
,当需要切换时,我只需用预先加载的音频交换当前音频并触发.play()
。
但是当标签处于非活动状态时,它并不总是有效。有时在交换时我发现了networkState == 3 (NETWORK_NO_SOURCE)
和readyState = 0 (HAVE_NOTHING)
的预取对象。
当我切换回标签时 - 它会立即开始播放。
我相信它是由异步资源选择算法和浏览器优化引起的,但不确定如何使其工作。
(在Safari中大部分可重复)。