umbau 1.2

This commit is contained in:
2026-09-03 00:51:01 +02:00
parent 8b0c35fc8b
commit 685068c21b
3 changed files with 31 additions and 3 deletions

View File

@ -1325,16 +1325,19 @@
});
const fitAddon = new FitAddon.FitAddon();
term.loadAddon(fitAddon);
term.open(container);
// Bug-Fix (Live-Test, F.6/Aufgabe#11, siehe terminal.js _setupTerminal()
// fuer die ausfuehrliche Begruendung): DOM-Renderer-Faerbung wird durch
// die strikte CSP (style-src 'self') stillschweigend verworfen. Canvas-
// Renderer zeichnet stattdessen direkt auf <canvas> und ist CSP-unabhaengig.
// Muss NACH term.open() geladen werden -- vorher hat der Container noch
// keine echten Masse, das <canvas> wird dann zu klein angelegt (Live-Test
// am 2.9. gefunden: sah wie eine haengende Markierung aus).
try {
term.loadAddon(new CanvasAddon.CanvasAddon());
} catch (err) {
console.warn("CanvasAddon konnte nicht geladen werden, Fallback auf DOM-Renderer:", err);
}
term.open(container);
fitAddon.fit();
const proto = window.location.protocol === "https:" ? "wss:" : "ws:";
@ -1436,16 +1439,19 @@
});
const fitAddon = new FitAddon.FitAddon();
term.loadAddon(fitAddon);
term.open(container);
// Bug-Fix (Live-Test, F.6/Aufgabe#11, siehe terminal.js _setupTerminal()
// fuer die ausfuehrliche Begruendung): DOM-Renderer-Faerbung wird durch
// die strikte CSP (style-src 'self') stillschweigend verworfen. Canvas-
// Renderer zeichnet stattdessen direkt auf <canvas> und ist CSP-unabhaengig.
// Muss NACH term.open() geladen werden -- vorher hat der Container noch
// keine echten Masse, das <canvas> wird dann zu klein angelegt (Live-Test
// am 2.9. gefunden: sah wie eine haengende Markierung aus).
try {
term.loadAddon(new CanvasAddon.CanvasAddon());
} catch (err) {
console.warn("CanvasAddon konnte nicht geladen werden, Fallback auf DOM-Renderer:", err);
}
term.open(container);
fitAddon.fit();
const playBtn = document.getElementById("rec-playpause-btn");

View File

@ -299,6 +299,7 @@
});
this.fitAddon = new FitAddon.FitAddon();
this.term.loadAddon(this.fitAddon);
this.term.open(this.terminalContainer);
// Bug-Fix (Live-Test, F.6/Aufgabe#11): xterm.js' Standard-DOM-Renderer
// faerbt Zellen (inkl. Markierungs-Hintergrund) teils per dynamisch
// erzeugtem <style>-Element, teils per element.setAttribute("style", ...).
@ -309,6 +310,14 @@
// funktioniert. Der Canvas-Renderer zeichnet Zeichen/Farben stattdessen
// direkt auf ein <canvas> (Pixel statt CSS) und ist von style-src nicht
// betroffen -- CSP bleibt dadurch unveraendert strikt.
//
// WICHTIG: erst NACH term.open() laden. Vor dem Oeffnen hat der
// Container noch keine echten Masse (Flex-Layout noch nicht berechnet);
// ein zu frueh geladener CanvasAddon legt sein <canvas> mit einer viel
// zu kleinen Zeilenzahl an. Ergebnis: das <canvas> deckt nur die
// obersten paar Zeilen ab, darunter blieb der reine DOM-Hintergrund
// (schwarz) sichtbar -- sah wie eine falsche/haengende Markierung aus,
// war aber ein Groessen-Mismatch (im Live-Test am 2.9. gefunden).
try {
this.canvasAddon = new CanvasAddon.CanvasAddon();
this.term.loadAddon(this.canvasAddon);
@ -319,7 +328,6 @@
// CSP-Fix abhaengig, aber die Sitzung funktioniert weiterhin.
console.warn("CanvasAddon konnte nicht geladen werden, Fallback auf DOM-Renderer:", err);
}
this.term.open(this.terminalContainer);
if (this.themeSelect) this.themeSelect.value = this._themeName;
this.term.onData((data) => {