javascript <音频> : cant update currentTime

标签 javascript jquery html audio html5-audio

我正在尝试为我的 html5 音频播放器制作进度条,并制作通过点击来更改轨道播放时间的功能。我决定使用输入[范围]来完成此操作,但是当我点击栏时,当前播放时间不会更新,轨道只是从头开始播放:

我的html:

<audio controls='controls' class="track">
      <source src="{{ user_lib.audio_file.url }}" type="audio/mpeg">
      <source src="{{ user_lib.audio_file.url }}" type='audio/ogg; codecs=vorbis' />
      <p>Your user agent does not support the HTML5 Audio element.</p>
</audio>

<div class="progress-bar">
        <input type="range" min="0" max="100" value="0" step="1" class="track-pb"
        onchange="PBtap()" id="track-pb"/>
    </div>

我的js:

function PBtap() {
        $('#track-pb').on('input propertychange', function() {

        var currenttrack = $('.track')[0];
        var val = parseInt($(this).val() * currenttrack.duration / 100, 10)
        $('#track-pb').prop("value", val);
        currenttrack.currentTime = val;
    })
}

我尝试使用

$(currenttrack).bind('canplay', function() {
            this.currentTime = val;
          });

我做错了什么?

最佳答案

这应该有效:

function PBtap(trackpb) {
    var currenttrack = $('.track')[0];
    var val = parseInt($(trackpb).val() * currenttrack.duration / 100, 10)
    currenttrack.currentTime = val;
}

在 HTML 中,将 onchange="PBtap()" 更改为 onchange="PBtap(this)"。这样使用onchange时,默认是无法访问this的。

您还可以添加以下内容来更改音频播放时的范围值:

setInterval(function () {
  var track = $(".track")[0];
  $("#track-pb")[0].value = track.currentTime / track.duration * 100;
}, 100);

如果将 HTML 中的 onchange 更改为 oninput,效果会更好。

关于javascript <音频> : cant update currentTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52907477/

相关文章:

javascript - 自动完成出现在模态弹出窗口后面

javascript - Firefox 中的 JQuery 效果;不是 Chrome /IE

jquery - jQuery 可以修改特定媒体类型的 CSS 吗?

javascript - 如果从数组中获取对象,则无法访问属性

javascript - IE7、IE8下图片文件上传及预览问题

html - 如何在导航菜单中垂直居中汉堡图标?

javascript - 我可以创建调用 Windows Phone 7 silverlight 应用程序的 HTML 5/JS 应用程序吗

javascript - JQuery 3.3.1 --- 添加类到 <a>

javascript - 比较两个数组对象数据并作为一个对象合并到 javascript 中的数组中?

javascript - meteor &铁路由器 : TypeError: undefined is not a function