-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
150 lines (133 loc) · 5.22 KB
/
script.js
File metadata and controls
150 lines (133 loc) · 5.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
/**
* Cookie-Banner Script für die Metrorealms Website
*
* Dieses Script verwaltet die Cookie-Zustimmung des Benutzers.
* Es zeigt das Banner nur an, wenn keine Zustimmung vorliegt.
*
* Funktionen:
* - Überprüfung der LocalStorage-Verfügbarkeit
* - Anzeige des Cookie-Banners bei fehlender Zustimmung
* - Speicherung der Benutzer-Zustimmung
* - Ausblenden des Banners mit Übergangseffekt
*/
// Wartet, bis das gesamte HTML-Dokument geladen ist
document.addEventListener('DOMContentLoaded', function() {
// Holt sich die HTML-Elemente
const cookieBanner = document.querySelector('.cookie-banner');
const acceptBtn = document.getElementById('cookieAcceptBtn');
// Fehlerbehandlung: Überprüfung ob alle Elemente gefunden wurden
if (!cookieBanner) {
console.error("KRITISCHER FEHLER: Das Cookie-Banner Element '.cookie-banner' wurde nicht gefunden!");
return;
}
if (!acceptBtn) {
console.error("KRITISCHER FEHLER: Der Button mit der ID 'cookieAcceptBtn' wurde nicht gefunden!");
return;
}
/**
* Überprüft, ob LocalStorage verfügbar ist
* @returns {boolean} True wenn LocalStorage verfügbar ist, false wenn nicht
*/
function isLocalStorageAvailable() {
try {
const test = '__storage_test__';
localStorage.setItem(test, test);
localStorage.removeItem(test);
return true;
} catch (e) {
console.warn("LocalStorage ist nicht verfügbar:", e.message);
return false;
}
}
// Überprüfung der LocalStorage-Verfügbarkeit
if (!isLocalStorageAvailable()) {
console.warn("WARNUNG: LocalStorage ist in diesem Browser nicht verfügbar. Cookie-Banner wird immer angezeigt.");
// Banner anzeigen, da wir keine Zustimmung speichern können
showCookieBanner();
return;
}
/**
* Zeigt das Cookie-Banner an
*/
function showCookieBanner() {
console.log("Cookie-Banner wird angezeigt");
cookieBanner.style.display = 'flex';
cookieBanner.style.opacity = '1';
}
/**
* Versteckt das Cookie-Banner mit Übergangseffekt
*/
function hideCookieBanner() {
console.log("Cookie-Banner wird versteckt");
cookieBanner.style.transition = 'opacity 0.5s ease';
cookieBanner.style.opacity = '0';
// Nach dem Übergangseffekt komplett verstecken
setTimeout(function() {
cookieBanner.style.display = 'none';
}, 500);
}
/**
* Überprüft die bestehende Cookie-Zustimmung
* @returns {boolean} True wenn Zustimmung vorhanden ist
*/
function hasUserConsented() {
try {
const consent = localStorage.getItem('cookieConsentGiven');
console.log("Gespeicherte Zustimmung gefunden:", consent);
return consent === 'true';
} catch (e) {
console.warn("Fehler beim Lesen der Zustimmung:", e.message);
return false;
}
}
/**
* Speichert die Cookie-Zustimmung des Benutzers
*/
function saveUserConsent() {
try {
localStorage.setItem('cookieConsentGiven', 'true');
console.log("Benutzer-Zustimmung wurde erfolgreich gespeichert");
return true;
} catch (e) {
console.error("Fehler beim Speichern der Zustimmung:", e.message);
return false;
}
}
// Hauptlogik: Entscheiden ob Banner angezeigt werden soll
if (hasUserConsented()) {
console.log("Zustimmung bereits vorhanden - Banner bleibt versteckt");
// Banner explizit verstecken (falls CSS-Konflikt vorliegt)
cookieBanner.style.display = 'none';
} else {
console.log("Keine Zustimmung gefunden - Banner wird angezeigt");
showCookieBanner();
}
// Event Listener für den Akzeptieren-Button
acceptBtn.addEventListener('click', function(event) {
// Verhindert Standard-Button-Verhalten
event.preventDefault();
console.log("Akzeptieren-Button wurde geklickt");
// Zustimmung speichern
if (saveUserConsent()) {
// Banner verstecken
hideCookieBanner();
} else {
console.error("Zustimmung konnte nicht gespeichert werden!");
// Banner trotzdem verstecken für diese Sitzung
hideCookieBanner();
}
});
// Zusätzlicher Debug-Event: Überwacht LocalStorage-Änderungen
window.addEventListener('storage', function(e) {
if (e.key === 'cookieConsentGiven') {
console.log("Cookie-Zustimmung wurde in anderem Tab geändert:", e.newValue);
}
});
// Debug-Funktion: Zustimmung zurücksetzen (nur für Entwicklung)
window.resetCookieConsent = function() {
localStorage.removeItem('cookieConsentGiven');
console.log("Cookie-Zustimmung wurde zurückgesetzt");
location.reload(); // Seite neu laden
};
console.log("Cookie-Banner Script wurde erfolgreich initialisiert");
});