【发布时间】:2011-07-07 19:05:22
【问题描述】:
我有一个简单的应用程序,它通过在 JavaScript 中调用音频元素上的 play() 方法反复播放短声音。它在桌面浏览器、ipad、iphone 等上运行良好。在运行 Android 2.3.3 的移动设备上,我第一次播放声音时,我在调用 play() 方法后立即听到,但在随后的调用中,有明显且可变的延迟。
我做了一些调查,发现每次调用 play() 方法时,设备都会从服务器获取音频文件。我可以在音频元素上调用 load() 方法以在每次播放后重新加载它,从而将其排队等待下一次播放,但该创可贴存在许多问题。我真的很想让浏览器永久加载音频元素,而不是在播放完毕后立即卸载它。有谁知道这是否可能?
编辑:我做了更多调查,我发现在播放声音后,音频元素的就绪状态保持在 HAVE_ENOUGH_DATA,即使浏览器不会再次播放该声音而不重新获取它服务器。我相信这是一个错误。我希望使用 readystate 来检测播放后卸载的浏览器,并且仅在必要时显式加载,但这不起作用。
【问题讨论】: