Vorschau: der Abspielen-Knopf tat beim ersten Klick nichts

animAbspielen rechnete performance.now() - ANIM_T[i] * dauer, damit die
Vorschau dort weiterlaeuft, wo der Regler steht. ANIM_T[i] ist aber undefined,
solange der Regler nie bewegt wurde: daraus wird NaN, der Fortschritt wird
NaN, und animT() liefert wegen seines eigenen "|| 0" brav wieder 0. Die
Vorschau stand still, ohne dass in der Konsole etwas auftauchte.

Bemerkt wurde es nicht, weil jede Pruefung vorher animSetzen() aufgerufen
hatte, um irgendetwas zu messen -- und damit genau den Zustand herstellte, in
dem es funktioniert. Ein Pruefskript, das den Anfangszustand anfasst, prueft
ihn nicht mehr.

animSetzen weist NaN jetzt zusaetzlich mit Number.isFinite ab, damit so ein
Wert gar nicht erst in den Stand kommt. In allen sechs Projekten nachgezogen.

Der Export war davon nicht betroffen; der Weg ueber POST /anim ist noch einmal
vom Knopf bis zur fertigen Datei durchgefahren worden.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
dejanandClaude Opus 5 committed 2026-08-27 16:21:46 +02:00
1 parent 9fe7b848ee
commit 7fb1c3dfcb
9 files changed
+69 -14

No files matched your search

+8 -2
View File
@@ -3976,7 +3976,8 @@ if (location.search.indexOf("nur=anim") >= 0)
({ i, key: a.key, dauer: a.dauer || 0, titel: a.eyebrow || a.key }));
window.animSetzen = (i, t) => {
ANIM_T[i] = Math.max(0, Math.min(1, t));
// Number.isFinite faengt NaN ab, bevor es im Stand landet.
ANIM_T[i] = Number.isFinite(t) ? Math.max(0, Math.min(1, t)) : 0;
animZeichnen(i);
const s = document.querySelector('input[data-animschieber="' + i + '"]');
if (s && document.activeElement !== s) s.value = String(Math.round(ANIM_T[i] * 1000));
@@ -3996,7 +3997,12 @@ if (location.search.indexOf("nur=anim") >= 0)
if (alt === knopf) return;
}
const dauer = (ANIMS[i].dauer || 4) * 1000;
const start = performance.now() - ANIM_T[i] * dauer;
/* Weiter, wo der Regler steht -- und bei 0 anfangen, wenn er noch nie
bewegt wurde. Ohne das || 0 ist ANIM_T[i] beim ersten Klick undefined,
start wird NaN, der Fortschritt wird NaN, und animT() liefert wegen
`|| 0` brav wieder 0: die Vorschau stand still, ohne dass irgendwo ein
Fehler auftauchte. */
const start = performance.now() - (ANIM_T[i] || 0) * dauer;
knopf.textContent = "Anhalten";
const schritt = jetzt => {
window.animSetzen(i, ((jetzt - start) % dauer) / dauer);