From 1e8aaf75f8a21dcdcf225f44627773f35ef23770 Mon Sep 17 00:00:00 2001 From: Daniel Onyejesi Date: Mon, 30 Mar 2026 21:37:00 -0400 Subject: [PATCH] Fix Read aloud stop button: findReadButton now finds data-action=speak buttons The button was always returning null because it searched for onclick=speakText but all output cards use data-action="speak" data-target="id". Now checks data-action first so the button correctly toggles to Stop during playback. --- public/js/app.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/js/app.js b/public/js/app.js index c625edc..66a5055 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -435,8 +435,12 @@ function findReadButton(elementId) { if (!card) return null; var buttons = card.querySelectorAll('button'); for (var i = 0; i < buttons.length; i++) { - var oc = buttons[i].getAttribute('onclick') || ''; - if (oc.indexOf('speakText') !== -1 && oc.indexOf(elementId) !== -1) return buttons[i]; + var btn = buttons[i]; + // data-action="speak" buttons (current approach) + if (btn.getAttribute('data-action') === 'speak' && btn.getAttribute('data-target') === elementId) return btn; + // legacy onclick fallback + var oc = btn.getAttribute('onclick') || ''; + if (oc.indexOf('speakText') !== -1 && oc.indexOf(elementId) !== -1) return btn; } return null; }