javascript - slider 单击时的jQuery音频持续时间更改

标签 javascript jquery audio time duration

我注意到以下代码在台式机和笔记本电脑上运行良好,但在我的 Android 手机或其他移动设备上运行良好,可以在用户单击 slider 时更改歌曲的持续时间:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

    <div id="timeline-box">
    <input id="seekslider" type="range" min="0" max="100" value="0" step="1"><br>           
    </div>

    **//jQuery to detect when user changes the timeline with the seekslider
    $(document).ready(function(){
      $("#seekslider").mouseup(function(e){
                var leftOffset = e.pageX - $(this).offset().left;
                var songPercents = leftOffset / $('#seekslider').width();
                audio.currentTime = songPercents * audio.duration;
            }); 
    });**

如果有人可以通过单击 jQuery 或 Javascript 中的 slider 时的持续时间更改来帮助我解决此问题,我将不胜感激。

最佳答案

您不能在移动设备上使用 mouseup。而是使用 touchend。这基本上相当于mouseup。也使用 .on 代替包装函数。通过这样做,您可以将多个监听器绑定(bind)到同一个元素(touchend 和 mouseup)。

//jQuery to detect when user changes the timeline with the seekslider
$(document).ready(function(){
    $("#seekslider").on('mouseup touchend',function(e){
        var leftOffset = e.pageX - $(this).offset().left;
        var songPercents = leftOffset / $('#seekslider').width();
        audio.currentTime = songPercents * audio.duration;
     }); 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

    <div id="timeline-box">
    <input id="seekslider" type="range" min="0" max="100" value="0" step="1"><br>           
    </div>

关于javascript - slider 单击时的jQuery音频持续时间更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55112631/

相关文章:

php - 我们可以对单个表的每个 tr 使用 form 吗?如何?

asp.net-mvc - 使用 ASP.NET MVC 3 **没有** jQuery

javascript - 使用 Sequelize JS 更新模型

javascript - 需要在没有页面移动的情况下禁用 html 页面上的滚动?

audio - 通过麦克风分析数字/模拟信号

android - 拆分长度不正确的音轨 - FFMPEG

javascript - 如何强制异步函数等待完成

jquery 突出显示导航中的当前元素仅部分使用多级导航

javascript - Masonry JS - 如何将第二行中的网格元素居中

html - 在没有 Flash 的网页上嵌入高质量的音频文件