From 9d596312d0812361ceaf73323b24fee5631af4ba Mon Sep 17 00:00:00 2001 From: ForgeCore Date: Tue, 7 Jul 2026 04:30:52 +0800 Subject: [PATCH] fix(player): guard against undefined button from createPlayerButton When YouTube's playback speed button hasn't been added to the DOM yet, createPlayerButton returns undefined. Calling .onclick/.addEventListener on undefined throws TypeError and breaks subsequent button initialization. Fix: early return if button is falsy after createPlayerButton returns. Closes #4114 --- js&css/web-accessible/www.youtube.com/player.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/js&css/web-accessible/www.youtube.com/player.js b/js&css/web-accessible/www.youtube.com/player.js index 0f8f47423..5d2ec030d 100644 --- a/js&css/web-accessible/www.youtube.com/player.js +++ b/js&css/web-accessible/www.youtube.com/player.js @@ -735,6 +735,8 @@ ImprovedTube.playerPlaybackSpeedButton = function () { title: "Playback Speed Control", }); + if (!button) return; + const updateSpeedText = () => { const currentSpeed = (this.elements.video?.playbackRate || 1.0).toFixed( 2 @@ -1122,6 +1124,8 @@ ImprovedTube.playerPlaybackSpeedButton = function () { title: 'Playback Speed (Scroll: adjust, Left: custom, Right: 1.0x)' }); + if (!button) return; + // Add right-click handler button.addEventListener('contextmenu', function (e) { e.preventDefault();