Wer im Chat hochscrollt, wird nicht mehr ans Ende gerissen
`pruef-chat-ausbau` stand seit dem 28.09. rot:
FEHL die Stelle bleibt stehen (0 -> 3574)
FEHL der Knopf sagt, wie viel wartet ("Zum neuesten")
FEHL er zaehlt mit ("Zum neuesten")
FEHL pruef-chat-ausbau: unbehandelter Fehler (der Knopf blieb verborgen)
WAS WIRKLICH PASSIERTE: Man liest weiter oben im Verlauf, jemand
schreibt -- und man wird ans Ende gerissen. Der Zaehler „1 neue
Nachricht" wurde dabei zurueckgesetzt, der Knopf blieb verborgen.
DIE URSACHE STAND AN DER FALSCHEN STELLE. Die Zuhoerer, die „der
Mensch hat selbst gescrollt" feststellen (Rad, Finger, Taste,
Zeiger), hingen INNERHALB des Sprung-Blocks zur Neu-Linie -- wurden
also erst angehaengt, NACHDEM einmal gesprungen worden war.
In einem ruhigen Gespraech passiert das nie: Wer alles gelesen hat,
bekommt keine Neu-Linie, der Block laeuft nicht, die Zuhoerer gibt es
nicht. Scrollt er hoch und es kommt eine Nachricht, entsteht die
Linie ZUM ERSTEN MAL -- der Block laeuft, haengt die Zuhoerer an und
springt im selben Atemzug. Das Hochscrollen von vorhin hat nie jemand
bemerkt.
Das ist der haeufigste Fall ueberhaupt: ein stiller Chat, man liest
etwas weiter oben nach, jemand schreibt.
Die Wache steht jetzt beim Aufbau, bei den uebrigen Zuhoerern des
Verlaufs. Ausdruecklich NICHT am `scroll`-Ereignis: Der Sprung
scrollt selbst, und `scroll` unterscheidet nicht, wer gescrollt hat.
Rad, Finger, Taste und Zeiger tut nur ein Mensch.
UND DIE PRUEFUNG HAT SELBST GEMOGELT. Sie schrieb `e.scrollTop = 0`
-- das setzt die Bildlaufposition zu, ohne dass ein Rad gedreht
wurde. Damit haette sie den Fehler auch nach der Behebung noch
gemeldet. Sie dreht jetzt das Rad (`mouse.wheel`) und prueft, dass
sie oben angekommen ist. Dieselbe Lehre wie bei den Fingergeraeten:
`setViewportSize` macht aus einer Maus keinen Finger, und
`scrollTop = 0` macht aus einem Programm keinen Leser.
Nachher: 70 Pruefungen, 0 Fehler (vorher 24/4).
die Stelle bleibt stehen (0 -> 0)
der Knopf sagt, wie viel wartet ("1 neue Nachricht")
er zaehlt mit ("2 neue Nachrichten")
wer unten steht, wird weiterhin mitgenommen -- ohne Knopf
Alle sieben Chatpruefungen gruen: anhaenge 123/0, aufloesen 126/0,
ausbau 70/0, kanaele 81/0, neu-stelle 63/0, neu 36/0, optik 62/0.
Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -2567,13 +2567,20 @@
|
||||
man gerade liest. Die Zuhoerer haengen am Verlauf und
|
||||
werden nur einmal gesetzt (`einmalGebunden`), sonst kaemen
|
||||
bei jedem Neuzeichnen neue dazu. */
|
||||
const schluss = () => { nochNachziehen = false; zurNeuLinie = false; };
|
||||
if (!ziel.dataset.neuWache) {
|
||||
ziel.dataset.neuWache = 'ja';
|
||||
for (const art of ['wheel', 'touchstart', 'keydown', 'pointerdown']) {
|
||||
ziel.addEventListener(art, schluss, { passive: true });
|
||||
}
|
||||
}
|
||||
/* DIE WACHE STEHT NICHT MEHR HIER (30.09.2026).
|
||||
|
||||
Sie hing bis dahin in diesem Block — also wurde sie erst
|
||||
angehängt, wenn einmal zur Neu-Linie gesprungen wurde. In
|
||||
einem ruhigen Gespräch passiert das nie: Wer alles gelesen
|
||||
hat, bekommt keine Linie, der Block läuft nicht, die
|
||||
Zuhörer gibt es nicht. Scrollt er dann hoch und es kommt
|
||||
eine Nachricht, entsteht die Linie ZUM ERSTEN MAL — der
|
||||
Block läuft, hängt die Zuhörer an und springt im selben
|
||||
Atemzug. Sein Hochscrollen hat nie jemand bemerkt.
|
||||
|
||||
Gemessen: „die Stelle bleibt stehen (0 -> 3574)". Jetzt
|
||||
steht die Wache beim Aufbau, bei den übrigen Zuhörern des
|
||||
Verlaufs. */
|
||||
/* Nach spaetestens zwei Sekunden wird nicht mehr NACHGEZOGEN
|
||||
-- der Merker bleibt aber stehen. Nachziehen faengt das
|
||||
Nachwachsen von Schriften und Bildern ab; das ist nach zwei
|
||||
@@ -4283,6 +4290,31 @@
|
||||
$('text').focus();
|
||||
});
|
||||
|
||||
/* ---------- WER SELBST SCROLLT, HAT ENTSCHIEDEN -------------------------
|
||||
|
||||
Ab da wird nicht mehr zur Neu-Linie gesprungen und nicht mehr
|
||||
nachgezogen — sonst risse es einen aus dem Text, den man gerade
|
||||
liest.
|
||||
|
||||
EINMAL BEIM AUFBAU, nicht im Sprung-Block (30.09.2026). Dort
|
||||
stand sie bis dahin und wurde deshalb erst scharf, NACHDEM
|
||||
einmal gesprungen worden war. Im häufigsten Fall überhaupt — ein
|
||||
stiller Chat, man liest etwas weiter oben nach, jemand schreibt
|
||||
— gab es sie damit nie, und man wurde ans Ende gerissen.
|
||||
|
||||
RAD, FINGER, TASTE, ZEIGER — und ausdrücklich NICHT `scroll`.
|
||||
Der Sprung scrollt selbst; ein `scroll`-Ereignis unterscheidet
|
||||
nicht, wer gescrollt hat. Diese vier tut nur ein Mensch. */
|
||||
{
|
||||
const wache = () => { nochNachziehen = false; zurNeuLinie = false; };
|
||||
const v = $('verlauf');
|
||||
if (v) {
|
||||
for (const art of ['wheel', 'touchstart', 'keydown', 'pointerdown']) {
|
||||
v.addEventListener(art, wache, { passive: true });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* ---------- Zum neuesten springen ---------------------------------------- */
|
||||
$('verlauf')?.addEventListener('scroll', () => {
|
||||
const v = $('verlauf');
|
||||
|
||||
Reference in New Issue
Block a user