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() {
|
function enforceVolume() {
|
||||||
if (rcGuarding) return;
|
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;
|
rcGuarding = true;
|
||||||
// Lautstärke immer auf den Wunschwert zwingen ...
|
// Lautstärke immer auf den Wunschwert zwingen ...
|
||||||
if (Math.abs(video.volume - video._rcDesiredVolume) > 0.001) {
|
if (Math.abs(video.volume - video._rcDesiredVolume) > 0.001) {
|
||||||
|
|
@ -410,6 +420,13 @@
|
||||||
const v = visibleReel();
|
const v = visibleReel();
|
||||||
if (!v) return;
|
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") {
|
if (e.code === "Space") {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue