From a157745cac0f5e3802fb29c1ce46d5005724a167 Mon Sep 17 00:00:00 2001 From: jloeve Date: Wed, 16 Dec 2020 20:18:16 +0800 Subject: [PATCH] =?UTF-8?q?fix(default-video-speed):=20=E9=98=B2=E6=AD=A2?= =?UTF-8?q?=E5=9C=A8=E9=9D=9E=E8=A7=86=E9=A2=91=E9=A1=B5=E9=9D=A2=E6=8A=9B?= =?UTF-8?q?=E5=87=BA=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/video/default-video-speed.ts | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/video/default-video-speed.ts b/src/video/default-video-speed.ts index d9257ecde..229f27292 100644 --- a/src/video/default-video-speed.ts +++ b/src/video/default-video-speed.ts @@ -38,22 +38,19 @@ const addSpeedToSetting = (speed: supportedVideoPlayRates, aid: string, force = settings.defaultVideoSpeedList = settings.defaultVideoSpeedList } -Observer.videoChange(async () => { - if (settings.useDefaultVideoSpeed) { - await setVideoSpeed((getSpeedFromSetting() || getDefaultVideoSpeed()) as supportedVideoPlayRates) - } -}) +const setup = _.once(async () => { + const menu = await SpinQuery.select(".bilibili-player-video-btn-speed-menu") -SpinQuery.select(".bilibili-player-video-btn-speed-menu").then(value => { - if (!value) { + if (!menu) { throw "speed menu not found!" } - Observer.all(value, (mutations) => { + + Observer.all(menu, (mutations) => { if (!settings.useDefaultVideoSpeed) { return } mutations.forEach(mutation => { - const selectedSpeedOption = mutation.target as HTMLLIElement; + const selectedSpeedOption = mutation.target as HTMLLIElement if (selectedSpeedOption.classList.contains("bilibili-player-active")) { const currentSpeed = parseFloat(selectedSpeedOption.dataset.value || '1') if (!unsafeWindow.aid) { @@ -64,3 +61,10 @@ SpinQuery.select(".bilibili-player-video-btn-speed-menu").then(value => { }) }) }) + +Observer.videoChange(async () => { + await setup() + if (settings.useDefaultVideoSpeed) { + await setVideoSpeed((getSpeedFromSetting() || getDefaultVideoSpeed()) as supportedVideoPlayRates) + } +})