如何让 HTML5 音频标签在具有自动播放选项的 webworks 应用程序中工作?
例如:在文档加载时,音频元素的 src 通过 javascript 更改,然后 audioElement.play() - 这不起作用,您必须将另一个链接或按钮的单击绑定到 audioElement.play() 并再次单击...
有任何想法吗?
function playSongNow(currentID) {
var audioElement = document.createElement('audio');
audioElement.setAttribute('autoplay', 'true');
audioElement.setAttribute('preload', 'true');
audioElement.setAttribute('src', 'http://' + sessionStorage.url + ':' + sessionStorage.port + '/rest/stream.view?u=' + sessionStorage.user + '&p=' + sessionStorage.pass + '&v=1.6.0&c=BerrySonic&id=' + currentID);
audioElement.load();
audioElement.addEventListener("load", function() {
audioElement.play();
$(".duration span").html(audioElement.duration);
$(".filename span").html(audioElement.src);
}, true);
$('.play').click(function() {
audioElement.play();
});
$('.pause').click(function() {
audioElement.pause();
});
$('.volumeMax').click(function() {
audioElement.volume=1;
});
$('.volumestop').click(function() {
audioElement.volume=0;
});
$('.stop').click(function() {
audioElement.pause();
audioElement.currentTime = 0;
});
$('.playatTime').click(function() {
audioElement.currentTime= 35; //Testing skipping so used 35
audioElement.play();
});
}
playSongNow 由 HTML 调用:
<a onclick="playSongNow('2f6d656469612f52616964426f782f4d757369632f4164656c652f32312f4164656c65202d2052756d6f7572204861732049742e6d7033');"><li>Rumour Has It</li></a>
新:实际上我认为我已经将问题缩小到:
audioElement.addEventListener("load", function() {
audioElement.play();
$(".duration span").html(audioElement.duration);
$(".filename span").html(audioElement.src);
}, true);
我尝试使用“canplaythrough”但两者都无法确定何时传递了足够的数据来实际播放,因为如果你这样做:
audioElement.load();
audioElement.play();
我尝试了以下事件:
audioElement.addEventListener('canplay', function() {
alert('canplay');
audioElement.play();
});
这可行,但这并不意味着音频可以在没有缓冲的情况下播放,不是吗?它还立即触发“canplaythrough”事件。
关于这些事件的一些指导会很方便。