script.js aktualisiert
Weitere Verbesserungen wie auch URL Validieren und Form Eingabe
This commit is contained in:
parent
41ae9b4b10
commit
597ed6dead
1 changed files with 44 additions and 11 deletions
55
script.js
55
script.js
|
|
@ -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 ===
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue