求助:切换播放列表/曲目时如何终止原音频,实现单轨播放?
实现逐轨播放的解决方案
全局音频实例管理:不要为每个曲目创建独立的
Audio实例,而是维护一个全局音频对象。每次点击新曲目时,先检查该实例是否处于播放状态,若正在播放则调用pause()并重置播放进度,再更新实例的音源地址并启动播放。示例代码:let currentAudio = null; function playTrack(trackUrl) { if (currentAudio) { currentAudio.pause(); currentAudio.currentTime = 0; } currentAudio = new Audio(trackUrl); currentAudio.play(); }批量停止活跃音频元素:如果是用
<audio>标签渲染曲目,可通过DOM选择器获取所有音频元素,遍历暂停所有正在播放的音频后,再启动新曲目的播放。示例代码:function playNewTrack(newAudioEl) { const allAudios = document.querySelectorAll('audio'); allAudios.forEach(audio => { if (!audio.paused) { audio.pause(); audio.currentTime = 0; } }); newAudioEl.play(); }绑定播放触发逻辑:给所有播放按钮、播放列表切换操作绑定点击事件,确保每次触发新播放前,先执行全局停止逻辑,再播放目标曲目。
同步播放状态UI:切换曲目或播放列表时,同步更新UI状态——比如高亮当前播放曲目、重置之前播放曲目的按钮样式,避免用户对播放状态产生混淆。
内容的提问来源于stack exchange,提问作者Tbre
相关产品推荐
相关产品推荐

