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

I can get audio.currentTime but not set it (in Google Chrome)

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

$("#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 重新启动)..

当我使用来自维基百科的 Ogg 文件对其进行测试时,您的代码运行完美。如果这确实是您的所有代码,那么这个问题似乎是由您的媒体文件中的某种损坏或意外格式引起的.

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

如果格式不是问题:

我今天在 Chrome 遇到过几次这个问题。浪费了很多时间试图解决它。 (版本55.x)

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

如果我不是 运行 Node 或 Django,我会使用:https://github.com/danvk/RangeHTTPServer