update 2 musik

This commit is contained in:
Cay 2026-03-16 13:30:25 +00:00
parent 0e06e34569
commit b3d1bad0aa

View File

@ -492,17 +492,26 @@
const vol = document.getElementById("music-volume");
let muted = localStorage.getItem("dok_muted") === "true";
let started = false; // ← merkt sich, ob Wiedergabe schon lief
if (localStorage.getItem("dok_vol") !== null)
vol.value = localStorage.getItem("dok_vol");
audio.volume = parseFloat(vol.value);
// Playlist mischen und von vorne durchspielen
let index = 0;
const shuffled = [...playlist].sort(() => Math.random() - 0.5);
function playTrack(i) {
audio.src = shuffled[i];
if (!muted) audio.play().catch(() => {});
audio.muted = muted;
if (!muted) {
audio
.play()
.then(() => {
started = true;
})
.catch(() => {});
}
}
audio.addEventListener("ended", () => {
@ -513,8 +522,18 @@
function applyMute() {
audio.muted = muted;
muteBtn.textContent = muted ? "🔇" : "🔊";
if (!muted && audio.paused) audio.play().catch(() => {});
localStorage.setItem("dok_muted", muted);
// Wenn gerade nicht stumm, aber Audio pausiert → starten/fortsetzen
if (!muted) {
if (!audio.src) playTrack(index);
audio
.play()
.then(() => {
started = true;
})
.catch(() => {});
}
}
muteBtn.addEventListener("click", () => {
@ -532,16 +551,25 @@
muteBtn.textContent = parseFloat(vol.value) === 0 ? "🔇" : "🔊";
});
// Erster Start beim ersten Klick (Browser-Autoplay-Sperre)
// Track laden (noch kein play() Browser erlaubt das vor Interaktion nicht)
playTrack(0);
applyMute();
document.addEventListener(
"click",
() => {
if (!muted && audio.paused) audio.play().catch(() => {});
},
{ once: true },
);
// Bei JEDER Interaktion prüfen, ob Audio noch nicht läuft → nachholen
// (kein { once: true } mehr, schadet aber kaum da der Check schnell ist)
function tryResume() {
if (!muted && (audio.paused || !started)) {
audio
.play()
.then(() => {
started = true;
})
.catch(() => {});
}
}
document.addEventListener("click", tryResume);
document.addEventListener("keydown", tryResume);
document.addEventListener("pointerdown", tryResume);
})();
</script>