我正在使用Chrome。在我的开发工具控制台中,我尝试了以下方法:
一切都按预期工作,除了最后一行。为什么我不能在它上面设置currentTime
?
另外一般来说,我发现整个HTML5音频的东西不是很可靠。是否有一个强大的javascript包装,可以回退到闪存?
你需要做这样的事情(如果你使用jQuery)
$('#elem_audio').bind('canplay', function() {
this.currentTime = 10;
});
或者在Javascript中
var aud = document.getElementById("elem_audio");
aud.oncanplay = function() {
aud.currentTime = 10;
};
此设置背后的原因是您需要确保音频已准备好播放。
为什么我不能在它上面设置
currentTime
?
设置为currentTime
后无法重现0
被设置为10
。 18.mp3
持续时间是否低于10
?
var request = new XMLHttpRequest();
request.open("GET", "/assets/audio/18.mp3", true);
request.responseType = "blob";
request.onload = function() {
if (this.status == 200) {
var audio = new Audio(URL.createObjectURL(this.response));
audio.load();
audio.currentTime = 10;
audio.play();
}
}
request.send();
的jsfiddle http://jsfiddle.net/Lg5L4qso/3/
我有同样的问题,原因是在mp3文件上缺少标题,如:
Content-Length, Content-Range, Content-Type
检查您的HTTP服务器配置,在我的测试环境中(Mac OS上的Chrome 69)设置音频元素的currentTime属性仅在音频源由HTTP服务器支持持久连接提供时才有效。
如果您使用的HTTP服务器支持持久连接,您将发现(在Chrome DevTool中)音频源响应头的Connection字段保持活动状态。相反,如果音频源由持久连接不兼容的服务器提供服务,则响应头中将不存在连接字段。
您的音频源HTTP请求的状态代码也将是一个参考,206部分内容用于持久连接支持的服务器,200 OK用于劣质服务器。
我的猜测是'10'比mp3的长度长。
但是记录mp3的长度而不是'0'。
你的Chrome版本是什么?
设置currentTime
我唯一可靠的工作方法是使用onprogress
事件。
audio.onprogress = function() {
if (audio.currentTime == 0) {
audio.currentTime = 10;
}
}