fix: Lautstärke wird nun direkt auf das nächste Reel angewandt
Instagram lädt das nächste Reel vor; dessen <video> wird früh von scan() erkannt und mit Steuerleiste versehen, wobei _rcDesiredVolume mit dem damaligen lastVolume eingefroren wurde. Nutzeränderungen danach aktualisierten nur die globale Variable, nicht das vorgeladene Reel — enforceVolume erzwang den veralteten Wert, bis zufällig ein später angeheftetes Video drankam. enforceVolume und der Tastatur-Handler übernehmen den Wunschstand nun vor jeder Aktion aus der globalen Quelle (lastVolume/lastMuted) statt dem eingefrorenen pro-Video-Wert zu vertrauen.
This commit is contained in:
parent
8fc36b94aa
commit
3ef8c142b9
1 changed files with 17 additions and 0 deletions
17
content.js
17
content.js
|
|
@ -228,6 +228,16 @@
|
|||
|
||||
function enforceVolume() {
|
||||
if (rcGuarding) return;
|
||||
// WICHTIG: Wunschstand immer aus der globalen Quelle übernehmen.
|
||||
// Instagram lädt das nächste Reel vor — sein <video> existiert
|
||||
// schon, bevor es sichtbar wird, und wird dann früh von scan()
|
||||
// angeheftet. Dabei wird _rcDesiredVolume mit dem DAMALIGEN
|
||||
// lastVolume eingefroren. Ändert der Nutzer danach auf dem
|
||||
// aktuellen Reel die Lautstärke, bliebe das vorgeladene Reel
|
||||
// sonst auf dem veralteten Wert stehen. Wir synchronisieren
|
||||
// deshalb hier (und vor jeder Tastatur-Aktion) neu.
|
||||
video._rcDesiredVolume = lastVolume;
|
||||
video._rcUserMuted = lastMuted;
|
||||
rcGuarding = true;
|
||||
// Lautstärke immer auf den Wunschwert zwingen ...
|
||||
if (Math.abs(video.volume - video._rcDesiredVolume) > 0.001) {
|
||||
|
|
@ -410,6 +420,13 @@
|
|||
const v = visibleReel();
|
||||
if (!v) return;
|
||||
|
||||
// Auch bei Tastatur-Aktionen den pro-Video eingefrorenen
|
||||
// Wunschstand neu aus der globalen Quelle übernehmen — sonst
|
||||
// würde z. B. ↑ auf einem vorgeladenen Reel (_rcDesiredVolume
|
||||
// noch 1) die globale Lautstärke fälschlich auf 1 zurücksetzen.
|
||||
v._rcDesiredVolume = lastVolume;
|
||||
v._rcUserMuted = lastMuted;
|
||||
|
||||
if (e.code === "Space") {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue