fix(default-video-speed): 以触发点击事件的方式实现倍数切换

This commit is contained in:
jloeve 2020-12-16 12:42:38 +08:00
parent bd5f845719
commit e935975d2b

View File

@ -1,21 +1,15 @@
const indexOfCurrentAid = () => settings.defaultVideoSpeedBlacklist.indexOf(unsafeWindow.aid as string) const indexOfCurrentAid = () => settings.defaultVideoSpeedBlacklist.indexOf(unsafeWindow.aid as string)
const getNativeDefaultPlaySpeed = () => { const nativeDefaultPlaySpeed = (() => {
try { try {
return parseFloat(JSON.parse(sessionStorage.getItem("bilibili_player_settings") as string).video_status.videospeed || 1) return parseFloat(JSON.parse(sessionStorage.getItem("bilibili_player_settings") as string).video_status.videospeed || 1)
} catch { } catch {
return 1 return 1
} }
} })()
const setPlaybackRate = async (speed: number) => { const setPlaybackRate = async (speed: number) => {
const video = await SpinQuery.select('.bilibili-player-video video') as HTMLVideoElement (await SpinQuery.select(`.bilibili-player-video-btn-speed-menu .bilibili-player-video-btn-speed-menu-list[data-value="${speed}"]`))?.click()
video.playbackRate = speed
SpinQuery.condition(
() => video,
() => video.playbackRate !== speed,
() => video.playbackRate = speed
)
} }
const updateWidget = (button: HTMLButtonElement, icon: HTMLElement, label: HTMLSpanElement, state: boolean) => { const updateWidget = (button: HTMLButtonElement, icon: HTMLElement, label: HTMLSpanElement, state: boolean) => {
@ -76,7 +70,7 @@ export default {
await setPlaybackRate(parseFloat(settings.defaultVideoSpeed)) await setPlaybackRate(parseFloat(settings.defaultVideoSpeed))
} else { } else {
settings.defaultVideoSpeedBlacklist.push(unsafeWindow.aid) settings.defaultVideoSpeedBlacklist.push(unsafeWindow.aid)
await setPlaybackRate(getNativeDefaultPlaySpeed()) await setPlaybackRate(nativeDefaultPlaySpeed)
} }
settings.defaultVideoSpeedBlacklist = settings.defaultVideoSpeedBlacklist settings.defaultVideoSpeedBlacklist = settings.defaultVideoSpeedBlacklist
updateWidget(button, icon, label, !state) updateWidget(button, icon, label, !state)