Filipe: „funktioniert nichts davon was machst du?"
Zu Recht. Ich habe an einem Abend fuenf Dinge repariert, jedes einzeln
nachgewiesen -- und bei ihm klingelte trotzdem nichts. Der Grund ist
jedes Mal derselbe gewesen: Ich kann von hier aus messen, was der
SERVER tut, aber nicht, was in SEINEM Browser ankommt. Und genau dort
lag es.
Gemessen habe ich gerade wieder: Der Server liefert die richtige Datei
aus (32616 Bytes, Klingelton enthalten), sobald sie mit Stempel
angefordert wird. Ohne Stempel kommt eine sieben Stunden alte Fassung
aus dem Zwischenspeicher. WELCHE von beiden sein Browser anfordert,
sehe ich nicht -- und das ist die Frage, an der alles haengt.
/workspace/anruf-probe.html dreht das um. Sie laeuft in SEINEM Browser
und beantwortet der Reihe nach:
1. Ist die neue Fassung ueberhaupt geladen? Sie holt anruf.js und
sieht nach, ob Klingelton und Nachklingeln darin stehen. Fehlen
sie, kommt die Seite aus dem Zwischenspeicher -- und JEDE
Reparatur ist unsichtbar, egal wie oft man neu laedt.
2. Darf der Browser Ton abspielen? (Er erlaubt ihn erst nach der
ersten Beruehrung -- wer ueber eine Benachrichtigung hereinkommt,
hoert sonst nichts und haelt das Telefon fuer kaputt.)
3. Sind Benachrichtigungen erlaubt UND ist ein Geraet beim Server
angemeldet? Das sind zwei verschiedene Dinge, und die Luecke
dazwischen sieht man sonst nirgends.
4. Steht die Verbindung, ueber die das Klingeln kommt?
Dazu ein Knopf, der genau den Klingelton abspielt, den ein Anruf
macht. Wer ihn hoert, weiss, dass es an der Seite nicht liegt.
Am Ende steht EIN Satz: das Wichtigste zuerst, mit dem, was zu tun
ist. Keine Liste zum Selbstdeuten.
Sie ruft niemanden an und zeigt nichts ueber andere.
Co-Authored-By: Claude Opus 5 <[email protected]>
64 lines
2.5 KiB
HTML
64 lines
2.5 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="de" data-haus="crew">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||
<title>Anruf-Probe · Team Dogi</title>
|
||
<meta name="robots" content="noindex, nofollow" />
|
||
<link rel="stylesheet" href="assets/css/basis.css?v=202609190013" />
|
||
<link rel="stylesheet" href="assets/css/kopf.css?v=202609190013" />
|
||
<link rel="stylesheet" href="assets/css/haus.css?v=202609190013" />
|
||
<style>
|
||
/* Bewusst in der Seite und nicht in einer eigenen Datei: Diese Seite
|
||
soll auch dann noch etwas anzeigen, wenn genau das schiefgeht,
|
||
was sie untersucht -- eine Stilvorlage, die aus dem
|
||
Zwischenspeicher kommt. */
|
||
.probe { max-width: 46rem; margin: 0 auto; padding: 1.4rem 1rem 3rem; }
|
||
.probe h1 { margin: .2rem 0 .3rem; }
|
||
.probe__unter { color: var(--text-leise); margin: 0 0 1.4rem; }
|
||
.punkt {
|
||
display: flex; gap: .8rem; align-items: flex-start;
|
||
padding: .85rem 1rem; margin-bottom: .6rem;
|
||
border: 1px solid var(--rand); border-radius: .7rem;
|
||
background: rgba(255,255,255,.02);
|
||
}
|
||
.punkt__zeichen { font-size: 1.1rem; line-height: 1.4; flex: 0 0 1.4rem; }
|
||
.punkt__text { flex: 1; min-width: 0; }
|
||
.punkt__titel { font-weight: 600; margin: 0 0 .15rem; }
|
||
.punkt__satz { margin: 0; color: var(--text-leise); font-size: .9rem; }
|
||
.punkt[data-stand="gut"] { border-color: rgba(120, 200, 150, .4); }
|
||
.punkt[data-stand="warn"] { border-color: rgba(220, 180, 110, .45); }
|
||
.punkt[data-stand="schlecht"] { border-color: rgba(230, 140, 140, .5); }
|
||
.probe__knopf { margin: 1.2rem 0 .4rem; }
|
||
.probe__ende {
|
||
margin-top: 1.6rem; padding: 1rem;
|
||
border-radius: .7rem; border: 1px dashed var(--rand-hell);
|
||
color: var(--text-leise); font-size: .92rem;
|
||
}
|
||
</style>
|
||
</head>
|
||
<body class="haus">
|
||
<header class="kopfleiste">
|
||
<a class="kopfleiste__zurueck" href="chat.html">‹ Zum Chat</a>
|
||
<div class="kopfleiste__mitte"><span class="kopfleiste__titel">Anruf-Probe</span></div>
|
||
<div class="kopfleiste__rechts"></div>
|
||
</header>
|
||
|
||
<main class="probe">
|
||
<h1>Warum klingelt es nicht?</h1>
|
||
<p class="probe__unter">
|
||
Diese Seite geht der Reihe nach durch, was ein Anruf braucht – und sagt,
|
||
an welcher Stelle es hakt. Sie ruft niemanden an.
|
||
</p>
|
||
|
||
<div id="ergebnis"></div>
|
||
|
||
<button type="button" class="knopf probe__knopf" id="ton-probe">Klingelton anhören</button>
|
||
|
||
<p class="probe__ende" id="rat"></p>
|
||
</main>
|
||
|
||
<script src="assets/js/anruf-probe.js?v=202609190013" defer></script>
|
||
</body>
|
||
</html>
|