P2c: Dynamic Script Attachment — Script vor execute in DOM einhängen #83

Closed
opened 2026-06-18 17:17:56 +00:00 by Artur · 1 comment
Owner

P2c: Dynamic Script Attachment — Element in DOM einhängen vor execute

Priority: MEDIUM
Betrifft: kit.svelte.dev (related to P0b but separate fix path)
Aufwand: ~1h

Problembeschreibung

Bestimmte Script-Typen (async/defer) benötigen dass das <script>-Element
im DOM-Baum hängt, bevor der Code ausgeführt wird. Der Parser pre-scaned
Scripts und führt sie aus — ohne das Element an die korrekte Position im DOM
zu setzen.

Dieses Issue ist ein separates Fix-Path von P0b (das den currentScript.parentElement
Fix behandelt). Hier geht es um allgemeines DOM-Attachment für dynamic scripts.

Lösung

// In dynamic-scripts.ts: Script-Element dort attachen wo der Parser es gefunden hat
function ensureScriptAttached(entry: ScriptEntry): void {
  if (entry.element && !entry.element.parentNode) {
    const insertBefore = entry.insertBefore || null; // vom Parser gesetzt
    const parent = document.head || document.body;
    parent.insertBefore(entry.element, insertBefore);
  }
}

Akzeptanzkriterien

  • Async/Defer-Scripts haben parentNode vor execution
  • document.currentScript.parentElement funktioniert
  • Keine Regression in script-loader.test.ts

Betroffene Dateien

Datei Änderung
src/js/dynamic-scripts.ts ensureScriptAttached vor execute
tests/unit/sprint18-script-attachment.test.ts 3+ Tests
## P2c: Dynamic Script Attachment — Element in DOM einhängen vor execute **Priority:** MEDIUM **Betrifft:** kit.svelte.dev (related to P0b but separate fix path) **Aufwand:** ~1h ### Problembeschreibung Bestimmte Script-Typen (async/defer) benötigen dass das `<script>`-Element im DOM-Baum hängt, bevor der Code ausgeführt wird. Der Parser pre-scaned Scripts und führt sie aus — ohne das Element an die korrekte Position im DOM zu setzen. Dieses Issue ist ein separates Fix-Path von P0b (das den `currentScript.parentElement` Fix behandelt). Hier geht es um allgemeines DOM-Attachment für dynamic scripts. ### Lösung ```typescript // In dynamic-scripts.ts: Script-Element dort attachen wo der Parser es gefunden hat function ensureScriptAttached(entry: ScriptEntry): void { if (entry.element && !entry.element.parentNode) { const insertBefore = entry.insertBefore || null; // vom Parser gesetzt const parent = document.head || document.body; parent.insertBefore(entry.element, insertBefore); } } ``` ### Akzeptanzkriterien - [ ] Async/Defer-Scripts haben parentNode vor execution - [ ] document.currentScript.parentElement funktioniert - [ ] Keine Regression in script-loader.test.ts ### Betroffene Dateien | Datei | Änderung | |-------|----------| | `src/js/dynamic-scripts.ts` | ensureScriptAttached vor execute | | `tests/unit/sprint18-script-attachment.test.ts` | 3+ Tests |
Artur closed this issue 2026-06-18 17:27:10 +00:00
Author
Owner

Mit #75 gelöst

Script Attachment ist implizit durch zwei Fixes gelöst:

  1. execution-realm.ts: Nur currentScript setzen wenn parentNode existiert
  2. parser.ts: Fakes Script-Element haben parentNode = document.head

Status: Geschlossen

✅ **Mit #75 gelöst** Script Attachment ist implizit durch zwei Fixes gelöst: 1. `execution-realm.ts`: Nur `currentScript` setzen wenn parentNode existiert 2. `parser.ts`: Fakes Script-Element haben `parentNode = document.head` **Status:** Geschlossen
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
glow-all/true-headless-browser#83
No description provided.