最近在做一个媒体播放器,集成了图片+音频播放模式和视频播放模式,研究了下 js audio 对象的事件,整理了相关事件及触发顺序。

音频的初始加载事件顺序:依次触发 onloadstartonprogressonsuspend,然后 onprogressonsuspend 交替触发,直到触发 ondurationchangeonloadedmetadataonloadeddataoncanplayoncanplaythrough,加载完成。

点击播放后触发事件顺序:
onplayonplayingontimeupdate,播放控件开始缓冲部分音频文件onprogress,缓冲足够多的音频片段后触发onsuspend,当缓冲即将播放完后又触发onprogressonsuspend,依次循环直到音频全部缓冲完毕。

音频播放完毕后触发:
onpauseonended

暂停播放控件时触发:
onpause

从暂停恢复播放后触发:
onplayonplaying