Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML5<;音频>;在'之前播放;canplaythrough';狩猎活动_Javascript_Html_Audio_Safari_Dom Events - Fatal编程技术网

Javascript HTML5<;音频>;在'之前播放;canplaythrough';狩猎活动

Javascript HTML5<;音频>;在'之前播放;canplaythrough';狩猎活动,javascript,html,audio,safari,dom-events,Javascript,Html,Audio,Safari,Dom Events,我正在尝试将标记添加到我的页面,并且担心音频加载。特别是关于较长的音频需要(相对)较长的时间加载缓慢的互联网 查看加载事件后,我发现canplay和canplaythrough。启动canplaythrough事件后,我可以播放音频,但由于某种原因,我无法在canplay和canplaythrough事件之间播放音频,即使它应该可以工作 如何使音频在canplay之后但在canplaythrough之前开始播放 我也欢迎非本机解决方案(第三方JS库)来支持这种分块播放(在完全加载之前播放) 编

我正在尝试将
标记添加到我的页面,并且担心音频加载。特别是关于较长的音频需要(相对)较长的时间加载缓慢的互联网

查看
加载事件后,我发现
canplay
canplaythrough
。启动
canplaythrough
事件后,我可以播放音频,但由于某种原因,我无法在
canplay
canplaythrough
事件之间播放音频,即使它应该可以工作

如何使音频在
canplay
之后但在
canplaythrough
之前开始播放

我也欢迎非本机解决方案(第三方JS库)来支持这种分块播放(在完全加载之前播放)


编辑:事实证明这只发生在Safari中,尽管我仍在寻找潜在的解决方案

(在Safari
12.1.2(14607.3.9)
、Firefox
69.0
和Chrome
76.0.3809.132
中测试,所有这些都运行在macOS
10.14.6(18G87)


例如:


document.addEventListener(“DOMContentLoaded”,()=>{
log('document.DOMContentLoaded');
const audioElement=document.getElementById('audioElement');
audioElement.addEventListener('canplay',()=>{
console.log('audioElement.canplay');
audioElement.play();
});
audioElement.addEventListener('canplaythrough',()=>{
console.log('audioElement.canplaythrough');
});
audioElement.addEventListener('play',()=>{
console.log('audioElement.play');
});
audioElement.addEventListener('playing',()=>{
console.log('audioElement.playing');
});
audioElement.addEventListener('timeupdate',(e)=>{
log('audioElement.timeupdate',audioElement.currentTime);
});
console.log('正在加载…')
audioElement.load();
});
输出:

> audioElement.canplay
> audioElement.play
> audioElement.playing
> audioElement.timeupdate – 0

[ pause of about 5-10 seconds ]

> audioElement.canplaythrough

[ audio actually starts playing ]

> audioElement.timeupdate – 0.135390108
> audioElement.timeupdate – 0.385407534
> audioElement.timeupdate – 0.636663779
> audioElement.timeupdate – 0.887541244
> audioElement.timeupdate – 1.137894301
> audioElement.timeupdate – 1.388934644
> audioElement.timeupdate – 1.64044203
> audioElement.timeupdate – 1.894268825
> audioElement.timeupdate – 2.139506962

过了这关运气好吗?我也有同样的问题,可以播放事件触发,但音频在canplaythrough事件触发之前不会真正播放。有没有通过这个问题?我也有同样的问题,可以播放事件火灾,但音频实际上不会播放,直到canplaythrough事件火灾。