Daher müsste ich irgendwie das script-Element ermitteln, in dem die Funktion steht, um dann dahinter den HTML-String einzufügen. Gibt es dafür eine Möglichkeit?
Nicht wirklich. Du könntest annehmen, dass das Script-Element das letzte gerparste ist und der Elementbaum genau bis da schon zur Verfügung steht:
document.xhtmlWrite = function (str) {
var nodelist = document.getElementsByTagName("*");
var script = nodelist.item(nodelist.length - 1);
var div = document.createElement("div");
div.innerHTML = str;
script.parentNode.insertBefore(div.firstChild, script);
};
Ah, danke für den Ansatz! Das war der richtige Tipp!
Ich bin damit gut weitergekommen:
`var scripts = document.getElementsByTagName("script"); var script = scripts[scripts.length - 1]; script.insertAdjacentHTML("afterEnd",str)`{:.language-javascript}
Ich weiß, dass das unsauber ist und zudem nur in Opera funktioniert, aber für meinen Zweck reicht es erst einmal, wenn das bei mir läuft.
> > Vielleicht gibt es aber auch noch eine bessere Möglichkeit, daher bin ich für Tipps sehr dankbar.
>
> Bleib am besten bei XHTML als text/html. Ich würde nicht empfehlen, da herumzubasteln. Bastelei wird unzuverlässig. Ich würde obigen Code nicht live einsetzen. Er macht zuviele Annahmen. Gut, man könnte Abfragen einbauen - aber was hat man davon. Wenn sie scheitern, funktioniert die Site trotzdem nicht.
XHTML als text/html kann aber nicht mit SVG gemischt werden. Und genau damit will ich ein bisschen experimentieren. Dafür muss das Dokument aber als XML geparst werden.
Danke noch mal und liebe Grüße
Frederik