From 53336f3a0b2aff88407079058813b9315dc8e981 Mon Sep 17 00:00:00 2001 From: tarai-dl Date: Sun, 19 Apr 2026 13:00:53 -0400 Subject: [PATCH] Fix #1637: Apply forced volume in iframe/embed context on first load When YouTube videos are embedded in iframes (e.g., on Google search results), the forced volume setting was not applied on first load or in incognito mode. The issue was that initPlayer() (which calls playerVolume()) was only called from init(), which might run before the player element is detected. In the main YouTube page, the yt-page-data-updated event re-triggers initPlayer(), but this event does not fire in embedded player contexts. The fix calls initPlayer() directly when the movie_player element is first detected in ytElementsHandler, ensuring forced volume is applied regardless of the initialization timing or context (main page vs iframe). --- js&css/web-accessible/functions.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/js&css/web-accessible/functions.js b/js&css/web-accessible/functions.js index d1943de9e..20b0b2e56 100644 --- a/js&css/web-accessible/functions.js +++ b/js&css/web-accessible/functions.js @@ -178,6 +178,10 @@ ImprovedTube.ytElementsHandler = function (node) { ImprovedTube.elements.player_thumbnail = node.querySelector('.ytp-cued-thumbnail-overlay-image'); ImprovedTube.elements.player_subtitles_button = node.querySelector('.ytp-subtitles-button'); ImprovedTube.playerSize(); + // Fix #1637: Apply forced volume in iframe/embed context when player is first detected + if (ImprovedTube.video_url !== location.href && ImprovedTube.elements.player.setPlaybackRate) { + ImprovedTube.initPlayer(); + } if (typeof this.storage.ads !== 'undefined' && this.storage.ads !== "all_videos") { new MutationObserver(function (mutationList) { for (var i = 0, l = mutationList.length; i < l; i++) {