用于html视频标记的JS currentTime不适用于chrome

时间:2015-01-15 13:28:52

标签: javascript jquery html5 google-chrome html5-video

我希望在点击特定按钮时捕获HTML5视频的当前运行时间。 这是我的代码

var vid = document.getElementById("video1");    
$('#cap-cue').click(function(){
    var curtime = vid.currentTime;
    alert(curtime);
});

这适用于大多数浏览器,但不适用于Chrome。

3 个答案:

答案 0 :(得分:4)

更新, 10/7/15:我发现Chrome实际上并没有使用 currentTime ,而是采用了处理video.load的方式()。

Here is a bug report on the issue.此时已超过2.5岁,并且不断被推进到其他报告中,但这是一个众所周知的错误。如果他们还没有解决这个问题,那么我并不相信它的优先级列表很高。

此错误已合并到问题#31014中,该问题已于8月份标记为已修复,但似乎人们(包括我自己)仍然存在此问题。

这似乎源于这样一个事实:如果您尝试向同一网址发出多个请求以检索任何媒体元素(音频或视频),那么网络连接似乎会在Chrome中挂起。我测试了这一点,果然,这正是我案件中发生的事情。

人们已经在上面的那个帖子中报告了几个变通方法,但我无法让它们中的任何一个起作用。

currentTime在Chrome中无法正常运行。我今天用videojs对此进行了测试,因为这是唯一一个抛出问题的浏览器,然后切换到标准的HTML5视频播放器,并遇到了同样的问题。

在FF和Edge中正常工作,但在Chrome中不起作用。

更奇怪的是,即使没有加载视频,也不会抛出错误。至少对于videojs,它会引发一个关于无法加载的错误。

I filed a bug report with videojs today,这与他们的播放器有关,但经过更多的考虑后,它似乎是一个Chrome问题。希望它至少会为标准HTML5播放器抛出错误。

答案 1 :(得分:2)

确保您准备好文档中的视频元素:

$(function() {
    var vid = document.getElementById("vid");  
});

$('#getTime').on('click', function() {
    var currentTime = vid.currentTime;
    $('#currentTime').html(currentTime);
});

JSFiddle demo

使用Chrome,Firefox和IE10在Windows上进行测试。

答案 2 :(得分:2)

问题(至少关于Chrome)可能在服务器端。 将Header set Accept-Ranges bytes放入.htaccess(请参阅this answer