Rocket1184 / electron-netease-cloud-music

UNOFFICIAL client for music.163.com. Powered by Electron and Vue
https://encm.rocka.me
GNU General Public License v3.0
445 stars 46 forks source link

[BUG] 按下空格/Ctrl是音乐回退一小段,造成诡异效果 #98

Closed Gesrua closed 4 years ago

Gesrua commented 4 years ago

具体本机复现方法为:播放时,拉一下进度条,按下 Ctrl/Space 即可复现

用 DevTool 设 Keyboard 断点,看了一下大概执行是 vue.runtime.esm.js 第 6936 行 return original.apply(this, arguments) 会导致回退。

版本是 0.9.23-1 from archlinuxcn

附件是录像

bug.zip

rocka commented 4 years ago

进度条只是用了一下 MuseUI 的 Slider 组件,调试了一下发现问题出在它的 handleKeydown 上:

https://github.com/museui/muse-ui/blob/74f78dfe6ae64776cfbd620e594daf3924abded4/src/Slider/Slider.js#L60-L84

明明上半部分已经定义了组件会响应的按键,以及对应的 action ,也判断了只有 action 非空时才执行对应的动作,但最后一行

https://github.com/museui/muse-ui/blob/74f78dfe6ae64776cfbd620e594daf3924abded4/src/Slider/Slider.js#L109

却没有放在 if (action) 的判断里面,导致按下任何一个未定义对应 action 的键,都会让进度条变回键盘事件触发时进度条的值

Gesrua commented 4 years ago

@rocka rocka/muse-ui#1 改了一行,因为不懂 electron,在 asar 里没有找到这个库,所以未测试