From 0e8c1447f288613420d590544d838539e157bed7 Mon Sep 17 00:00:00 2001 From: Dogfather Date: Wed, 26 Aug 2026 14:55:31 +0200 Subject: [PATCH] DRINGEND: Namenskollision zerstoerte die Uebersicht Alle Kacheln der Uebersicht zeigten "[object Object]" und "undefined". Ursache war mein Push-Code von heute. Er brachte eine Hilfsfunktion namens kachel(titel, inhalt, art) mit -- und weiter oben in derselben Datei gibt es seit langem kachel(o), die die Uebersichtskacheln baut. JavaScript kennt keine Ueberladung. Steht spaeter eine zweite Funktion desselben Namens im selben Gueltigkeitsbereich, gewinnt sie. Ohne Warnung, ohne Fehlermeldung, ohne dass irgendein Werkzeug anschlaegt. Danach bekam jede Uebersichtskachel mein Objekt als ersten Parameter und gab es als Zahl aus. Besonders tueckisch: Die Push-Karte selbst funktionierte einwandfrei -- sie steht ja unmittelbar ueber den kaputten Kacheln. Der sichtbare Schaden lag weit weg von seiner Ursache, und nichts deutete auf den neuen Code hin. Die Funktion heisst jetzt pushKachel und sagt damit, wozu sie gehoert. Co-Authored-By: Claude Opus 5 --- assets/js/wd-core.js | 2 +- webdesign/sw.js | 2 +- webdesign/verwaltung.html | 28 ++++++++++++++++++++++------ 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/assets/js/wd-core.js b/assets/js/wd-core.js index a59b367b..88687e98 100644 --- a/assets/js/wd-core.js +++ b/assets/js/wd-core.js @@ -838,7 +838,7 @@ Stand haben. Die Nummer wird zusammen mit CACHE_NAME in sw.js hochgezaehlt -- beide gehoeren zusammen. */ navigator.serviceWorker - .register("/webdesign/sw.js?v=56", { scope: "/webdesign/" }) + .register("/webdesign/sw.js?v=57", { scope: "/webdesign/" }) .catch(function () { /* still schlucken: ohne SW funktioniert alles weiter */ }); }); } diff --git a/webdesign/sw.js b/webdesign/sw.js index 40df5bd7..4a871dce 100644 --- a/webdesign/sw.js +++ b/webdesign/sw.js @@ -34,7 +34,7 @@ Start alle alten Zwischenspeicher weg. Muss bei jeder Änderung an den Dateien unten hochgezählt werden, sonst hängen Nutzer auf einem alten Stand fest. */ -const CACHE_NAME = "dogfather-webdesign-v56"; +const CACHE_NAME = "dogfather-webdesign-v57"; /* Bausteine, die die Oberfläche zum Anzeigen braucht. Bewusst KEINE HTML-Datei in dieser Liste. */ diff --git a/webdesign/verwaltung.html b/webdesign/verwaltung.html index c124bf37..9b0aad95 100644 --- a/webdesign/verwaltung.html +++ b/webdesign/verwaltung.html @@ -2680,7 +2680,7 @@ h = '

Dieser Browser kann keine Benachrichtigungen empfangen. ' + 'Auf dem iPhone geht es erst, wenn die Seite über „Teilen → Zum Home-Bildschirm“ ' + 'installiert und von dort geöffnet wird.

'; - kasten.innerHTML = kachel("Benachrichtigung", h, "leise"); + kasten.innerHTML = pushKachel("Benachrichtigung", h, "leise"); kasten.hidden = false; return; } @@ -2689,7 +2689,7 @@ h = '

Benachrichtigungen sind für diese Seite im Browser blockiert. ' + 'Ein Knopf hilft hier nicht weiter — das lässt sich nur in den Browsereinstellungen ' + 'zurücknehmen (Schloss-Symbol neben der Adresse → Benachrichtigungen → Zulassen).

'; - kasten.innerHTML = kachel("Benachrichtigung blockiert", h, "warn"); + kasten.innerHTML = pushKachel("Benachrichtigung blockiert", h, "warn"); kasten.hidden = false; return; } @@ -2706,7 +2706,7 @@ '' + '' + ''; - kasten.innerHTML = kachel("Benachrichtigung ist an", h, "gut"); + kasten.innerHTML = pushKachel("Benachrichtigung ist an", h, "gut"); } else { h = '

Neue Anfragen fallen im Moment nur auf, wenn du hier nachsiehst. ' + 'Mit einer Meldung aufs Handy bekommst du es sofort mit — im Text stehen nur ' + @@ -2714,14 +2714,30 @@ '

' + '' + '
'; - kasten.innerHTML = kachel("Benachrichtigung einschalten", h, "warn"); + kasten.innerHTML = pushKachel("Benachrichtigung einschalten", h, "warn"); } kasten.hidden = false; verdrahtePushKnoepfe(); } - function kachel(titel, inhalt, art) { + /* ⚠️ HIESS ZUERST NUR "kachel" — UND HAT DAMIT DIE UEBERSICHT + ZERSTOERT (26.08.2026, sofort behoben). + + Weiter oben in derselben Datei gibt es bereits eine Funktion + kachel(o), die die Kacheln der Uebersicht baut. JavaScript kennt + keine Ueberladung: Steht spaeter eine zweite Funktion desselben + Namens im selben Gueltigkeitsbereich, gewinnt sie -- ohne Warnung, + ohne Fehler. + + Danach bekam jede Uebersichtskachel mein Objekt als ersten + Parameter gereicht und zeigte "[object Object]" und "undefined" + an. Die Push-Karte funktionierte dabei einwandfrei, was die Suche + zusaetzlich in die Irre fuehrt: Der sichtbare Schaden lag weit weg + von seiner Ursache. + + Deshalb traegt sie jetzt einen Namen, der sagt, wozu sie gehoert. */ + function pushKachel(titel, inhalt, art) { var farbe = art === "gut" ? "var(--wd-aqua)" : art === "warn" ? "var(--wd-lila-hell)" : "var(--wd-rand)"; return '
' + s((fehler && fehler.message) || "Unbekannter Fehler") + '

' + '
' + '' +