鍍金池/ 問答/HTML5  HTML/ js加載音樂的,有時候oncanplay不執(zhí)行

js加載音樂的,有時候oncanplay不執(zhí)行

let load = (musicSrc) => new Promise(resolve => {
    let audio       = new Audio()
    audio.oncanplay = resolve
    audio.src       = musicSrc
})

加載一個音樂,但是有的時候oncanplay不會執(zhí)行,不知道為什么。

我正常開發(fā)的時候,oncanplay會執(zhí)行沒什么問題,但是我用chrome模擬限制了一下網(wǎng)速
他就不觸發(fā)了。

可是我在Network里看到他已經(jīng)加載完成了啊,結(jié)果就是不觸發(fā)事件,很難受::>_<::

回答
編輯回答
野橘
當(dāng)音頻/視頻處于加載過程中時,會依次發(fā)生以下事件:
loadstart
durationchange
loadedmetadata
loadeddata
progress
canplay
canplaythrough

其中后面兩個:

canplay 當(dāng)瀏覽器可以播放音頻/視頻時
canplaythrough 當(dāng)瀏覽器可在不因緩沖而停頓的情況下進(jìn)行播放時

題主用 canplaythrough 試試看有沒有問題,摘自 W3

2018年2月2日 02:13
編輯回答
孤客

你的意思是如果不限速沒有問題,限速了就出現(xiàn)問題?

2018年3月21日 14:31
編輯回答
瘋浪

試下這個方法

var load = (musicSrc) => new Promise(resolve => {
    let audio       = new Audio()
    audio.src       = musicSrc
    audio.addEventListener('canplay', resolve);
})
2018年5月17日 00:22