Fix stream player autoplay: handle blocked play() promise
window.open() doesn't transfer the user gesture to the new tab, so autoplay
is blocked. Previously play().catch(()=>{}) swallowed the error silently while
setting playing=true, leaving the UI in a broken state.
Now: if play() rejects, reset state and show "Click Play to start". The user's
click on the Play button IS a user gesture, so it succeeds on the second attempt.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
ee8cfd8314
commit
9e08079dec
1 changed files with 21 additions and 15 deletions
|
|
@ -118,22 +118,28 @@
|
|||
function startPlay() {
|
||||
audio.src = streamUrl;
|
||||
setVol(parseInt(slider.value, 10));
|
||||
audio.play().catch(() => {});
|
||||
playing = true;
|
||||
playBtn.innerHTML = '▮▮ Stop';
|
||||
audio.play().then(() => {
|
||||
playing = true;
|
||||
playBtn.innerHTML = '▮▮ Stop';
|
||||
|
||||
// SSE metadata
|
||||
if (sse) sse.close();
|
||||
sse = new EventSource('/radio/sse/?url=' + encodeURIComponent(streamUrl));
|
||||
sse.onmessage = e => {
|
||||
try {
|
||||
const data = JSON.parse(e.data);
|
||||
if (data.track) {
|
||||
document.getElementById('track-name').textContent = data.track;
|
||||
document.title = data.track + ' — ' + stationName;
|
||||
}
|
||||
} catch (_) {}
|
||||
};
|
||||
if (sse) sse.close();
|
||||
sse = new EventSource('/radio/sse/?url=' + encodeURIComponent(streamUrl));
|
||||
sse.onmessage = e => {
|
||||
try {
|
||||
const data = JSON.parse(e.data);
|
||||
if (data.track) {
|
||||
document.getElementById('track-name').textContent = data.track;
|
||||
document.title = data.track + ' — ' + stationName;
|
||||
}
|
||||
} catch (_) {}
|
||||
};
|
||||
}).catch(() => {
|
||||
// Autoplay blocked — reset state, prompt user to click
|
||||
playing = false;
|
||||
audio.src = '';
|
||||
playBtn.innerHTML = '▶ Play';
|
||||
document.getElementById('track-name').textContent = 'Click Play to start';
|
||||
});
|
||||
}
|
||||
|
||||
function stopPlay() {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue