HTML5“<audio>”标签的“success”和“ready”事件?

Han*_*Sun 2 html javascript audio event-handling dom-events

这是我的代码(coffeescript):

toVoice = new Audio("myVoice.mp3")
toVoice.addEventListener("ended", ->console.log("ended"))
toVoice.addEventListener("error", ->console.log("error"))
toVoice.addEventListener("success", ->console.log("success"))
toVoice.addEventListener("ready", ->console.log("ready"))
Run Code Online (Sandbox Code Playgroud)

我想在以下情况下显示一条消息:

  1. 远程音频文件可下载
  2. 音频文件可以播放

我发现endedand erroreventListener 工作得很好,但是successand readyeventListener 不起作用。

我试图找到一份关于Audio标签/对象的所有可用事件的 MDN 文档,但我没有找到。

有谁知道如何注册回调来检测音频是否有效且可播放?

Aru*_*hny 5

没有成功或准备就绪媒体元素事件

我想你可以loadstart尝试loadeddata

toVoice = new Audio("myVoice.mp3")
toVoice.addEventListener("ended", ->console.log("ended"))
toVoice.addEventListener("error", ->console.log("error"))
toVoice.addEventListener("canplay", ->console.log("canplay"))
toVoice.addEventListener("loadeddata", ->console.log("loadeddata"))
Run Code Online (Sandbox Code Playgroud)

  • 只是澄清一下,addingEventListener 并不像 Promise。这意味着如果在为“loadeddata”事件添加 EventListener 之前与 Audio 对象关联的 src 已完全加载,则该函数将不会被调用。要解决这个问题,只需构造一个空对象 `var myaudio = new Audio();` -> 创建 EventListener -> 然后提供 src `myaudio.src = 'myVoice.mp3'` (2认同)