我可以获得audio.currentTime但不能设置它(在Google Chrome中)

时间:2015-05-20 13:33:21

标签: javascript google-chrome firefox html5-audio

这让我发疯了。这是我用来设置当前时间的代码:

$("#audio").click(function(e) {
    e.preventDefault();
    mr_waveform_skip(e)
});

function mr_waveform_skip(event) {
    clientX = event.clientX;
    left = event.currentTarget.offsetLeft;
    clickoffset = clientX - left;
    percent = clickoffset/event.currentTarget.offsetWidth
    audio_duration = audio_element.duration;
    duration_seek = percent*audio_duration;
    audio_element.currentTime = duration_seek;
    // audio_element.currentTime = 10;
    console.log('CLICK: ' + duration_seek + ' Element: ' + audio_element + ' CurrentTime: ' + audio_element.currentTime);
}

我似乎无法设置 audio_element.currentTime 获取它!

更糟糕的是,它适用于fireFox!无论如何,Chrome都会在0时重新启动。

以上代码在Firefox控制台中生成的内容:

CLICK: 63.82905432385121 Element: [object HTMLAudioElement] CurrentTime: 3.849546

在Chrome中:

CLICK: 63.82905432385121 Element: [object HTMLAudioElement] CurrentTime: 3.849546

请参阅?同一个!我们可以看到Chromes看到HTML音频元素(因为它可以获取值)。如果我audio_element.currentTime = 10;它仍然无法正常工作(在Chrome 中,Firefox忠实地重新启动为10)..

2 个答案:

答案 0 :(得分:2)

当我使用维基百科的Ogg文件进行测试时,您的代码工作正常。如果这确实是您的所有代码,那么此问题似乎是由媒体文件中的某种损坏或意外格式引起的。< / p>

您将无法使用代码解决此问题;您需要生成一个新的媒体文件,您的浏览器可以正确处理。也许尝试使用不同的音频软件(或不同的设置)来制作或重新处理媒体文件。

答案 1 :(得分:1)

如果格式不是问题:

我今天在Chrome中遇到过这个问题几次。浪费了这么多时间来解决它。 (第55.x版)

解决方案是重启Chrome。无数页面刷新后,突然没有设置值。它可能是一些缓存错误。我要强调的是,使用支持范围请求的开发服务器也是一个好主意。

如果我没有运行Node或Django,我使用:https://github.com/danvk/RangeHTTPServer