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 <[email protected]>
This commit is contained in:
2026-08-26 14:55:31 +02:00
co-authored by Claude Opus 5
parent 77b395e2b4
commit 0e8c1447f2
3 changed files with 24 additions and 8 deletions
+1 -1
View File
@@ -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 */ });
});
}
+1 -1
View File
@@ -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. */
+22 -6
View File
@@ -2680,7 +2680,7 @@
h = '<p class="wd-klein wd-leise">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.</p>';
kasten.innerHTML = kachel("Benachrichtigung", h, "leise");
kasten.innerHTML = pushKachel("Benachrichtigung", h, "leise");
kasten.hidden = false;
return;
}
@@ -2689,7 +2689,7 @@
h = '<p class="wd-klein">Benachrichtigungen sind für diese Seite im Browser <strong>blockiert</strong>. ' +
'Ein Knopf hilft hier nicht weiter — das lässt sich nur in den Browsereinstellungen ' +
'zurücknehmen (Schloss-Symbol neben der Adresse → Benachrichtigungen → Zulassen).</p>';
kasten.innerHTML = kachel("Benachrichtigung blockiert", h, "warn");
kasten.innerHTML = pushKachel("Benachrichtigung blockiert", h, "warn");
kasten.hidden = false;
return;
}
@@ -2706,7 +2706,7 @@
'<button type="button" class="wd-btn wd-btn--zweit wd-btn--klein" id="vw-push-test">Probemeldung schicken</button>' +
'<button type="button" class="wd-btn wd-btn--zweit wd-btn--klein" id="vw-push-aus">Auf diesem Gerät ausschalten</button>' +
'</div>';
kasten.innerHTML = kachel("Benachrichtigung ist an", h, "gut");
kasten.innerHTML = pushKachel("Benachrichtigung ist an", h, "gut");
} else {
h = '<p class="wd-klein">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 @@
'<div class="wd-btn-reihe" style="margin-top:.7rem">' +
'<button type="button" class="wd-btn wd-btn--klein" id="vw-push-an">Auf diesem Gerät einschalten</button>' +
'</div>';
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 '<div class="wd-karte" style="padding:1rem 1.1rem;margin-bottom:1.1rem;' +
@@ -2780,7 +2796,7 @@
} catch (fehler) {
var kasten = document.getElementById("vw-push-karte");
if (kasten) {
kasten.innerHTML = kachel("Einschalten hat nicht geklappt",
kasten.innerHTML = pushKachel("Einschalten hat nicht geklappt",
'<p class="wd-klein">' + s((fehler && fehler.message) || "Unbekannter Fehler") + '</p>' +
'<div class="wd-btn-reihe" style="margin-top:.7rem">' +
'<button type="button" class="wd-btn wd-btn--zweit wd-btn--klein" id="vw-push-an">Nochmal versuchen</button>' +