【问题标题】:The `success` and `ready` event for HTML5 `<audio>` tag?HTML5 `<audio>` 标签的 `success` 和 `ready` 事件?
【发布时间】:2015-06-17 03:01:05
【问题描述】:

这是我的代码(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"))

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

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

我发现endederror eventListener 运行良好,但successready eventListener 不起作用。

我试图找到有关Audio 标记/对象​​的所有可用事件的 MDN 文档,但我没有找到..

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

【问题讨论】:

    标签: javascript html audio event-handling dom-events


    【解决方案1】:

    没有成功或准备好eventsmedia element

    我想你可以试试loadstartloadeddata

    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"))
    

    【讨论】:

    • canplay 事件可能会取代 OP 认为的 ready 事件。
    • 只是为了澄清一下,添加EventListener 不像Promise。这意味着如果与 Audio 对象关联的 src 在为“loadeddata”事件添加 EventListener 之前已完全加载,则不会调用该函数。要解决这个问题,只需构造一个空对象 var myaudio = new Audio(); -> 创建 EventListener -> 然后提供 src myaudio.src = 'myVoice.mp3'
    猜你喜欢
    • 2016-11-04
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    • 2012-06-05
    • 2023-04-11
    • 1970-01-01
    相关资源
    最近更新 更多