script.js aktualisiert

Weitere Verbesserungen wie auch URL Validieren und Form Eingabe
This commit is contained in:
simonpipe 2024-12-23 20:28:55 +00:00
parent 41ae9b4b10
commit 597ed6dead

View file

@ -1,7 +1,7 @@
document.addEventListener('DOMContentLoaded', function () { document.addEventListener('DOMContentLoaded', function () {
// === Abschnitt: Globale Variablen === // === Abschnitt: Globale Variablen ===
const presetContainer = document.getElementById('preset-container'); const presetContainer = document.getElementById('preset-container');
const addNewPresetButton = document.getElementById('add-new-preset'); const newPresetForm = document.getElementById('new-preset-form');
const newPresetNameInput = document.getElementById('new-preset-name'); const newPresetNameInput = document.getElementById('new-preset-name');
const newPresetUrlInput = document.getElementById('new-preset-url'); const newPresetUrlInput = document.getElementById('new-preset-url');
const exportButton = document.getElementById('export-button'); const exportButton = document.getElementById('export-button');
@ -32,26 +32,55 @@ document.addEventListener('DOMContentLoaded', function () {
} }
} }
// === Funktion: Titel dynamisch ändern ===
function updateTitle(stationName) {
if (stationName) {
document.title = `${stationName} - Radioplayer mit Presets`;
} else {
document.title = "Radioplayer mit Presets";
}
}
// === Abschnitt: Event-Listener === // === Abschnitt: Event-Listener ===
function initializeEventListeners() { function initializeEventListeners() {
exportButton.addEventListener('click', exportPresets); newPresetForm.addEventListener('submit', (event) => {
importButton.addEventListener('click', importPresets); event.preventDefault(); // Verhindert die Standardaktion (Seiten-Reload)
loadPresetsLink.addEventListener('click', loadPresetsFromFile);
addNewPresetButton.addEventListener('click', () => {
const presetName = newPresetNameInput.value.trim(); const presetName = newPresetNameInput.value.trim();
const presetUrl = newPresetUrlInput.value.trim(); const presetUrl = newPresetUrlInput.value.trim();
if (presetName && presetUrl) { if (!presetName || !presetUrl) {
addNewPreset(presetName, presetUrl);
savePresetToLocalStorage(presetName, presetUrl);
newPresetNameInput.value = '';
newPresetUrlInput.value = '';
} else {
alert("Bitte geben Sie einen Namen und eine URL ein."); alert("Bitte geben Sie einen Namen und eine URL ein.");
return;
} }
// URL-Validierung: Prüfen, ob die URL mit http:// oder https:// beginnt
if (!isValidHttpUrl(presetUrl)) {
alert("Bitte geben Sie eine gültige HTTP- oder HTTPS-URL ein.");
return;
}
addNewPreset(presetName, presetUrl);
savePresetToLocalStorage(presetName, presetUrl);
// Felder zurücksetzen
newPresetNameInput.value = '';
newPresetUrlInput.value = '';
}); });
// Hilfsfunktion zur Überprüfung von URLs
function isValidHttpUrl(url) {
try {
const parsedUrl = new URL(url);
return parsedUrl.protocol === "http:" || parsedUrl.protocol === "https:";
} catch (e) {
return false;
}
}
exportButton.addEventListener('click', exportPresets);
importButton.addEventListener('click', importPresets);
loadPresetsLink.addEventListener('click', loadPresetsFromFile);
stopButton.addEventListener('click', stopPlayback); stopButton.addEventListener('click', stopPlayback);
} }
@ -144,6 +173,8 @@ document.addEventListener('DOMContentLoaded', function () {
item.classList.add('playing'); item.classList.add('playing');
currentPlayingItem = item; currentPlayingItem = item;
currentStationName.textContent = item.querySelector('h3').textContent; currentStationName.textContent = item.querySelector('h3').textContent;
updateTitle(item.querySelector('h3').textContent); // Sendername in den Titel einfügen
} }
function stopPlayback() { function stopPlayback() {
@ -157,6 +188,8 @@ document.addEventListener('DOMContentLoaded', function () {
currentStationName.textContent = 'Kein Sender ausgewählt.'; currentStationName.textContent = 'Kein Sender ausgewählt.';
} }
} }
updateTitle('');
} }
// === Funktion: Preset-Import und -Export === // === Funktion: Preset-Import und -Export ===