瀏覽代碼

fix: edge cases

Sv443 1 年之前
父節點
當前提交
ade556b9f8
共有 2 個文件被更改,包括 14 次插入6 次删除
  1. 9 1
      src/features/behavior.ts
  2. 5 5
      src/features/layout.ts

+ 9 - 1
src/features/behavior.ts

@@ -238,7 +238,7 @@ let volumeSliderObserverActive = false;
 
 let sliderElem: HTMLInputElement | undefined;
 function overrideVolValues() {
-  if(!sliderElem)
+  if(!sliderElem || !getFeatures().lockVolume)
     return;
 
   volumeSliderObserverActive = false;
@@ -247,15 +247,23 @@ function overrideVolValues() {
     const vidElem = document.querySelector<HTMLVideoElement>(videoSelector);
     if(vidElem)
       vidElem.volume = getFeatures().lockVolumeLevel / 100;
+  
     if(!sliderElem) {
       volumeSliderObserverActive = true;
       return;
     }
     sliderElem.value = String(getFeatures().lockVolumeLevel);
     sliderElem.setAttribute("aria-valuenow", String(getFeatures().lockVolumeLevel));
+
     const knobElem = document.querySelector<HTMLElement>("#volume-slider #sliderKnobContainer #sliderKnob");
     if(knobElem)
       knobElem.style.left = `${getFeatures().lockVolumeLevel}%`;
+
+    const labelElem = document.querySelector<HTMLElement>("#bytm-vol-slider-label .label");
+    const newLabelContent = `${getFeatures().lockVolumeLevel}%`;
+    if(labelElem && labelElem.textContent !== newLabelContent)
+      labelElem.textContent = newLabelContent;
+
     volumeSliderObserverActive = true;
   }, 10);
 }

+ 5 - 5
src/features/layout.ts

@@ -1,11 +1,11 @@
-import { addGlobalStyle, addParent, autoPlural, fetchAdvanced, insertAfter, pauseFor } from "@sv443-network/userutils";
+import { addGlobalStyle, addParent, autoPlural, fetchAdvanced, insertAfter, pauseFor, type Stringifiable } from "@sv443-network/userutils";
 import type { FeatureConfig } from "../types";
 import { scriptInfo } from "../constants";
 import { error, getResourceUrl, log, onSelectorOld, warn, t, resourceToHTMLString } from "../utils";
 import { openCfgMenu } from "../menu/menu_old";
+import { getFeatures } from "../config";
 import { featInfo } from ".";
 import "./layout.css";
-import { getFeatures } from "src/config";
 
 let features: FeatureConfig;
 
@@ -218,11 +218,11 @@ async function addVolumeSliderLabel(sliderElem: HTMLInputElement, sliderContaine
   const labelContElem = document.createElement("div");
   labelContElem.id = "bytm-vol-slider-label";
 
-  const constantLabel = getFeatures().lockVolume ? getFeatures().lockVolumeLevel : undefined;
+  const getLabel = (value: Stringifiable) => `${getFeatures().lockVolume ? getFeatures().lockVolumeLevel : value}%`;
 
   const labelElem = document.createElement("div");
   labelElem.classList.add("label");
-  labelElem.textContent = `${constantLabel ?? sliderElem.value}%`;
+  labelElem.textContent = getLabel(sliderElem.value);
 
   // prevent video from minimizing
   labelContElem.addEventListener("click", (e) => e.stopPropagation());
@@ -244,7 +244,7 @@ async function addVolumeSliderLabel(sliderElem: HTMLInputElement, sliderContaine
 
     const labelElem2 = document.querySelector<HTMLDivElement>("#bytm-vol-slider-label div.label");
     if(labelElem2)
-      labelElem2.textContent = `${constantLabel ?? sliderElem.value}%`;
+      labelElem2.textContent = getLabel(sliderElem.value);
   };
 
   sliderElem.addEventListener("change", () => updateLabel());