我对这个非常简单的 HTML5 + Javascript 代码有疑问。它会尝试在加载后直接播放声音。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Test page</title>
</head>
<body>
<audio src="freedom.wav"
id="audio1"
preload='auto'
onloadeddata="alert('the sound has been loaded !'); document.getElementById('audio1').play();"
></audio>
<input type="button" value="Play it again !" onclick="document.getElementById('audio1').play();" />
</body>
</html>
如您所见,我正在加载带有 HTML5 音频标签的声音。声音完全加载后,将启动事件“onloadeddata”并执行 Javascript 代码。此代码提示一个警告窗口并立即开始播放声音。 alert() 调用可以直观地通知我声音已成功加载。
但问题是:play() 调用有效,但声音是在 alert() 窗口出现后的 SECONDS 播放的。这种延迟对我来说是有问题的,因为我希望有一个指示器可以告诉我何时可以立即播放声音。而且似乎“onloadeddata”不符合这些要求。
请注意,一旦第一个 play() 成功,我将不会延迟进一步的 play() 调用。我可以用“再玩一遍!”来验证这一点。 button : 单击按钮后立即播放声音,第一个 play() 已通过。
谁能告诉我第一次调用 play() 时的延迟是否有解决方案?或者有什么方法可以告诉我什么时候可以播放声音?
我在使用谷歌浏览器。
非常感谢!
最佳答案
好的,这个问题实际上已经明确定义了。
- 这个错误只发生在 chrome 上(Firefox 没有问题)
- 它只涉及wav文件
- 这与 Javascript 的 play() 函数无关,我通过直接在 chrome 中打开 wav 文件得到了同样的延迟
我仍然没有找到解决这个延迟的方法,现在我真的不在乎了。我将使用 MP3 或 OGG 文件,这就足够了。
干杯!
关于HTML5 中的 Javascript 和音频 - 第一个 'play()' 调用后的延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18360591/