使用 jquery 将 onclick 事件添加到音频时间线

Posted

技术标签:

【中文标题】使用 jquery 将 onclick 事件添加到音频时间线【英文标题】:add a onclick event to audio timeline with jquery 【发布时间】:2016-07-11 21:00:22 【问题描述】:

您将如何将 onclick 事件添加到此音频时间线,该事件会转到相对于您单击位置的音频位置。

jsfiddle:https://jsfiddle.net/jeffd/6bm3jcfm/1/

html

<audio src="https://99centbeats.com/1e4cb5f584d055a0992385c1b2155786/44ec3770dad9ca5669c4e32439c4c9a1/sick-n-tired-w-vocals-f0fb72ae83.mp3" id="player"></audio>  
<button id="play">Play</button>
<button id="pause">Pause</button>

<div class="hp_slide">
     <div class="hp_range"></div>
</div>

jquery:

$('#play').on('click', function() 
    document.getElementById('player').play();
);

$('#pause').on('click', function() 
    document.getElementById('player').pause();
);

var player = document.getElementById('player');    
player.addEventListener("timeupdate", function() 
    var currentTime = player.currentTime;
    var duration = player.duration;
    $('.hp_range').stop(true,true).animate('width':(currentTime +.25)/duration*100+'%',250,'linear');
);

CSS

 .hp_slide
        width:100%;
         height:5px;
          background:red;

    
    .hp_range
        width:0;
        background:black;
        height:5px;
    

【问题讨论】:

【参考方案1】:

最简单的方法是获取跟踪栏中点击的offsetX,并将其计算为总宽度的百分比。

然后您可以取该百分比并将音频的持续时间乘以它来设置音频元素的currentTime 属性。像这样的:

var player = document.getElementById('player');
var duration = 0;
player.addEventListener("timeupdate", function() 
    var currentTime = player.currentTime;
    duration = player.duration;
    $('.hp_range').stop(true, true).animate(
        'width': (currentTime + .25) / duration * 100 + '%'
    , 250, 'linear');
);

$('.hp_slide').click(function(e) 
    var pc = e.offsetX / $(this).width();
    player.currentTime = duration * pc;
)

Working example

【讨论】:

谢谢罗里!这是一个超级简单高效的例子!

以上是关于使用 jquery 将 onclick 事件添加到音频时间线的主要内容,如果未能解决你的问题,请参考以下文章

将 jQuery onClick 切换到 keyCode

如何将 onclick 事件添加到表格列?

jQuery onclick 事件为打开视图页面添加动态选项卡

jquery怎样修改onclick属性值

【jquery】怎么用js调用标签的onclick事件

如果启用按钮,则执行此 onclick 事件