Open cha0sCat opened 3 years ago
从 #9 引入的问题
设备:移动端 chrome 复现方法:进入音频后,快速多次点击进度条触发 seek
分析: 在部分浏览器上,seek 会触发 onPause 钩子, 缓冲结束后,播放器会强制继续播放(触发 onPlay 钩子)
但是 onPause、onPlay 用来 反映播放器状态 的属性 playing 同时也是 控制播放器播放 的属性
反映播放器状态
控制播放器播放
这就导致 playing 内部形成了一个闭环控制
这个问题可以在 华为 P30 Chrome 浏览器上复现。 附一段视频 https://files.catbox.moe/qxnrt7.mp4
解决方案: 分离播放器实际状态 playing 和 用户控制状态 wantPlaying
类似这种问题写的时候见了很多次,其实Vue自带的Vuex最适合解决这类问题。主要是使用不可变更的变量以及状态变更单向传递。
从 #9 引入的问题
设备:移动端 chrome 复现方法:进入音频后,快速多次点击进度条触发 seek
分析: 在部分浏览器上,seek 会触发 onPause 钩子, 缓冲结束后,播放器会强制继续播放(触发 onPlay 钩子)
但是 onPause、onPlay 用来
反映播放器状态
的属性 playing 同时也是控制播放器播放
的属性这就导致 playing 内部形成了一个闭环控制
这个问题可以在 华为 P30 Chrome 浏览器上复现。 附一段视频 https://files.catbox.moe/qxnrt7.mp4
解决方案: 分离播放器实际状态 playing 和 用户控制状态 wantPlaying