如何实现HTML5音频播放结束触发回调处理?
- 内容介绍
- 文章标签
- 相关推荐
本文共计899个文字,预计阅读时间需要4分钟。
在音频播放时,如果仅播放到自然播放完(即播放指针走到末尾),则不会触发触觉反馈,不是由于暂停、出错或被中断。很多人误以为播放停止了就触发了触觉反馈,实际上,触觉反馈的回调并不会直接执行——实际上是手动调用了`pause()`,或者因为音频加载失败根本没开始播放。
-
ended不会因网络中断、error事件、abort或用户点击暂停而触发 - 如果音频设置了
loop="true",ended永远不会触发(循环会重置播放位置) - 动态设置
src后必须显式调用load(),否则旧的监听可能失效,新音频播完也不触发ended
给 audio 绑定 ended 回调的正确写法
别在 HTML 里用 onended="handleEnd()",容易和后续 JS 逻辑冲突;也别用 addEventListener('ended', ...) 后不存引用,导致无法移除。最稳妥的是在元素就绪后绑定,并确保监听器在生命周期内有效。
本文共计899个文字,预计阅读时间需要4分钟。
在音频播放时,如果仅播放到自然播放完(即播放指针走到末尾),则不会触发触觉反馈,不是由于暂停、出错或被中断。很多人误以为播放停止了就触发了触觉反馈,实际上,触觉反馈的回调并不会直接执行——实际上是手动调用了`pause()`,或者因为音频加载失败根本没开始播放。
-
ended不会因网络中断、error事件、abort或用户点击暂停而触发 - 如果音频设置了
loop="true",ended永远不会触发(循环会重置播放位置) - 动态设置
src后必须显式调用load(),否则旧的监听可能失效,新音频播完也不触发ended
给 audio 绑定 ended 回调的正确写法
别在 HTML 里用 onended="handleEnd()",容易和后续 JS 逻辑冲突;也别用 addEventListener('ended', ...) 后不存引用,导致无法移除。最稳妥的是在元素就绪后绑定,并确保监听器在生命周期内有效。

