Fix: preventDefault aus pointerdown entfernt (bricht iOS-Safari pointer-sequence)

Diagnose: Lukas' Browser-Logs zeigen Service-Worker-Activity
(sw.js?v=2026.5.18-...) und alle Wiki-Assets werden via SW geladen.
Wiki selbst registriert keinen SW, der SW kommt von woanders.

Echter Fix: preventDefault() in onDown() entfernt. Auf iOS Safari
verliert das Event-System die nachfolgenden Pointer-Move-Events wenn
preventDefault() auf pointerdown gefeuert wird — das Event wird quasi
'konsumiert' bevor der Browser die Touch-Sequenz weiterverarbeitet.

Außerdem: touchstart ist jetzt passive: true (preventDefault dort war
illegal und hätte Synthetic-Click ausgelöst die das Modal geschlossen
hätte). touchmove und touchend bleiben passive: false damit preventDefault
dort funktioniert um Browser-Default-Scroll zu blocken.

Lukas' Browser-Console-Log zeigte dass alle Assets via Service-Worker
geladen wurden — das deutet auf aggressive Cache-Strategie hin, weshalb
ein Hard-Reload mit Cache-Buster URL empfehlenswert ist.
This commit is contained in:
2026-07-21 07:52:06 +00:00
parent 9248ae62c7
commit ad59009107
+2 -2
View File
@@ -327,7 +327,7 @@
} }
function onDown(e) { function onDown(e) {
e.preventDefault(); // Don't preventDefault here — breaks iOS-Safari pointer sequence
const p = getXY(e, canvas); const p = getXY(e, canvas);
isDragging = true; isDragging = true;
moved = false; moved = false;
@@ -387,7 +387,7 @@
canvas.addEventListener('pointerleave', onUp); canvas.addEventListener('pointerleave', onUp);
// Touch events fallback (older iOS Safari 12-) // Touch events fallback (older iOS Safari 12-)
canvas.addEventListener('touchstart', onDown, { passive: false }); canvas.addEventListener('touchstart', onDown, { passive: true });
canvas.addEventListener('touchmove', onMove, { passive: false }); canvas.addEventListener('touchmove', onMove, { passive: false });
canvas.addEventListener('touchend', onUp, { passive: false }); canvas.addEventListener('touchend', onUp, { passive: false });
canvas.addEventListener('touchcancel', onUp, { passive: false }); canvas.addEventListener('touchcancel', onUp, { passive: false });