HTML5 音频进度条 - 如何更改点击时的音频位置?
HTML5 progress bar on audio - how to change audio position on click?
我重新创建了我正在处理的类似代码的 fiddle。
问题是我无法更改音频位置。例如,如果音频正在播放第 5 秒,我想跳过一部分曲目并转到结尾,它不会改变。
在fiddle中,进度条发生变化,但音频继续没有变化。
在我的测试环境中,进度条在点击时发生变化,然后它立即回到音频播放的正确位置,并且在这里音频继续没有变化。
如何更改点击时的音频进度?
这是我的代码:
const audio = $('audio')[0];
const progressBar = document.getElementById('progressbar');
function updateProgressBar() {
const percentage = Math.floor((100 / audio.duration) * audio.currentTime);
progressBar.value = percentage;
progressBar.innerHTML = percentage + '% played';
}
$("#progressbar").on("click", function(e) {
var max = $(this).width(); //Get width element
var pos = e.pageX - $(this).offset().left; //Position cursor
var dual = Math.round(pos / max * 100); // Round %
if (dual > 100) {
var dual = 100;
}
$(this).val(dual);
progressBar.value = dual
});
<audio src="https://file-examples.com/wp-content/uploads/2017/11/file_example_WAV_10MG.wav"> </audio>
<progress id="progressbar" class="progress_controls" max="100" value="0"></progress>
<div id="play">
PLAY
</div>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
您缺少两件事 - 一个使用音轨进度更新进度条的侦听器,以及一个根据您在进度条上的点击更新音轨 currentTime 的函数。 SO上已经有很多帖子,请先搜索!
Audio Progress Bar html5 with interaction
Custom progress bar for <audio> and <progress> HTML5 elements
您需要为点击功能添加一个 currentTime 事件监听器,
在这里,用这个替换你的点击功能:
$("#progressbar").on("click", function(e) {
var progbar = $('#progressbar');
var pos = e.pageX - progbar.offset().left; //Position cursor
var percent = pos / progbar.width(); //Get width element
audio.currentTime = percent * audio.duration;
progbar.value = percent / 100;
});
我重新创建了我正在处理的类似代码的 fiddle。 问题是我无法更改音频位置。例如,如果音频正在播放第 5 秒,我想跳过一部分曲目并转到结尾,它不会改变。
在fiddle中,进度条发生变化,但音频继续没有变化。 在我的测试环境中,进度条在点击时发生变化,然后它立即回到音频播放的正确位置,并且在这里音频继续没有变化。
如何更改点击时的音频进度?
这是我的代码:
const audio = $('audio')[0];
const progressBar = document.getElementById('progressbar');
function updateProgressBar() {
const percentage = Math.floor((100 / audio.duration) * audio.currentTime);
progressBar.value = percentage;
progressBar.innerHTML = percentage + '% played';
}
$("#progressbar").on("click", function(e) {
var max = $(this).width(); //Get width element
var pos = e.pageX - $(this).offset().left; //Position cursor
var dual = Math.round(pos / max * 100); // Round %
if (dual > 100) {
var dual = 100;
}
$(this).val(dual);
progressBar.value = dual
});
<audio src="https://file-examples.com/wp-content/uploads/2017/11/file_example_WAV_10MG.wav"> </audio>
<progress id="progressbar" class="progress_controls" max="100" value="0"></progress>
<div id="play">
PLAY
</div>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
您缺少两件事 - 一个使用音轨进度更新进度条的侦听器,以及一个根据您在进度条上的点击更新音轨 currentTime 的函数。 SO上已经有很多帖子,请先搜索!
Audio Progress Bar html5 with interaction
Custom progress bar for <audio> and <progress> HTML5 elements
您需要为点击功能添加一个 currentTime 事件监听器, 在这里,用这个替换你的点击功能:
$("#progressbar").on("click", function(e) {
var progbar = $('#progressbar');
var pos = e.pageX - progbar.offset().left; //Position cursor
var percent = pos / progbar.width(); //Get width element
audio.currentTime = percent * audio.duration;
progbar.value = percent / 100;
});