Changeset e64a49b in Klonkt for src/middleware/render.js


Ignore:
Timestamp:
08/07/2026 12:24:02 PM (5 weeks ago)
Author:
roboburr <roboburr@…>
Branches:
main
Children:
0db68bd
Parents:
20ae7b0
git-author:
Robin <roboburr@…> (08/07/2026 12:24:00 PM)
git-committer:
roboburr <roboburr@…> (08/07/2026 12:24:02 PM)
Message:

Berichten uit inline script naar een module (shaer-bqr, stap 2)

De enige bevestigde stukke plek. Kwam je hier via een link BINNEN de site, dan
arriveerde het script via htmx met een nonce die het document niet kent, en
weigerde de CSP het (shaer-0i6). Chips, zoeken en het in-/uitklappen deden dan
niets, en de reply-editor laadde niet -- dat was Barts melding.

Een pagina vraagt nu om zijn module met pageJs; de shell zet dat op body[data-js]
en de bootstrap importeert het. De waarde wordt een PAD, dus hij gaat door
/[a-z0-9 -]*$/ voordat hij de locals in mag.

TWEE DINGEN MOESTEN VERANDEREN, en niet omdat de code fout was: een module leeft
anders dan een inline script.

NIETS VASTHOUDEN het inline script pakte .msg-list, #msg-q en .msg-nomatch

een keer bij het inladen. Een module wordt per document maar
EEN keer geimporteerd, dus wie Berichten verlaat en
terugkomt houdt verwijzingen over naar elementen die er niet
meer zijn. Nu per keer opzoeken, en de invoerluisteraar
gedelegeerd in plaats van op het veld zelf.

OPNIEUW INDEXEREN bij binnenkomst op de pagina, niet alleen bij "meer laden".

Anders is de lijst na een navigatie niet geindexeerd en
filtert het zoeken op een lege verzameling.

Dat eerste is precies de val waar de chrome-partials al een comment over hebben
staan ("a once-captured reference goes stale"), en het geldt hier dubbel omdat
een module niet opnieuw draait.

Templates compileren, suite 556/556.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/middleware/render.js

    r20ae7b0 re64a49b  
    249249    appVersion: APP_VERSION,
    250250    bodyClass: data.bodyClass || 'on-home',
     251    // Welke module(s) deze pagina nodig heeft (shaer-bqr). De shell zet ze op
     252    // body[data-js]; de bootstrap daar importeert ze uit /assets/js/mod/.
     253    // Alleen kleine letters, cijfers, streepjes en spaties -- de naam wordt een
     254    // pad.
     255    pageJs: /^[a-z0-9 -]*$/.test(String(data.pageJs || '')) ? (data.pageJs || '') : '',
    251256    socialDescr: data.socialDescr || '',
    252257    socialImage: data.socialImage || '',
Note: See TracChangeset for help on using the changeset viewer.