如何使<音频>在打开循环后播放
How to make <audio> play after turning on loop
我正在开发一个简单的网络音频播放器。我已经复制并粘贴了下面的HTML和JS,但不能包含音频文件,所以要查看工作示例,请查看GitHub页面:jsejcksn.github.io/audio-player/
一切都像我想要的那样工作,除了我注意到一个问题,它在 Chrome 桌面(OS X 上的 40.0.2214.91)的特定条件下无法播放。我还在 Safari 桌面(OS X 上的 8.0.2)和 iOS 上的 Chrome 上进行了测试,它们在上面运行良好。以下是重现该问题的步骤:
- 按
Play
按钮将音频文件一直播放到最后(直到停止) - 按
Loop
按钮 - 按下
Play
按钮(它无法播放!
我的 JavaScript 有问题吗?(这似乎比Chrome桌面中的错误更有可能,但我不确定。
// Variables ----------
var player = document.getElementById('player');
var btnLoop = document.getElementById('btn-loop');
var btnReplay = document.getElementById('btn-replay');
var btnPlayPause = document.getElementById('btn-play-pause');
// Functions ----------
function endOfAudio() {
btnPlayPause.innerHTML = 'Play';
console.log('Music stopped');
}
function loop() {
if (player.loop == true) {
player.loop = false;
btnLoop.innerHTML = 'Loop';
console.log('Looping off');
}
else if (player.loop == false) {
player.loop = true;
btnLoop.innerHTML = 'Turn off Loop';
console.log('Looping on');
}
}
function playPause() {
if (player.paused == true) {
player.play();
btnPlayPause.innerHTML = 'Pause';
console.log('Music playing');
}
else if (player.paused == false) {
player.pause();
btnPlayPause.innerHTML = 'Play';
console.log('Music paused');
}
}
function replay() {
player.currentTime = 0;
player.play();
btnPlayPause.innerHTML = 'Pause';
console.log('Music playing from start');
}
// EventListeners ----------
btnLoop.addEventListener('click', loop);
btnPlayPause.addEventListener('click', playPause);
btnReplay.addEventListener('click', replay);
player.addEventListener('ended', endOfAudio);
<header>
<h1>Audio Player</h1>
</header>
<div id="app">
<audio id="player" controls preload="auto" src="audio/audio.mp3"></audio>
<button id="btn-replay">Replay</button>
<button id="btn-play-pause">Play</button>
<button id="btn-loop">Loop</button>
</div>
尝试检查音频播放器的ended
属性,参见此处。如果在按下循环按钮之前当前播放已结束,您可以像在重播功能中一样重置currentTime
,然后播放。
相关文章:
- 使用jQuery无限循环播放HTML页面幻灯片
- 在没有大量回调函数的情况下在列表元素上循环播放同一动画
- 如何循环播放幻灯片中进度条的函数
- 停止循环播放文本,但仍运行效果
- 使用 Javascript 循环播放 HTML5 音频
- 随机页面加载后循环播放其余视频
- 循环播放Raphael动画,没有fps问题
- 使用Snap.svg循环播放动画
- Vide.js循环播放多个视频
- 循环播放动画
- 使用jquery循环播放视频
- 整页.js - 在背景视频循环播放时向右移动幻灯片
- 科尔多瓦媒体,如何获取循环播放的回调
- 如何循环播放按钮
- 防止视频阵列循环播放
- j查询视频不循环播放
- 在HTML5 Canvas / Fabric js中循环播放动画
- 使动画循环播放
- 回退到 Flash 时,使用 VideoJS 库循环播放视频
- 音轨在Javascript中循环播放,没有延迟