Hallo,
ich hab mir schon einen Elch gesucht, bin aber nicht fündig geworden.
Problem: per JS dekodiertes Script wird nicht ausgeführt. Beispiel:
<html><head></head><body>
<div id="b64">... Base64 Inhalt ...</div>
<div id="klartext"></div>
<script type="text/javascript">
var text = atob(document.getElementByID("b64").innerHTML);
document.getElementByID("klartext").innerHTML = text;
</script>
</body></html>
Ein in "text" enthaltenes Script wird nicht ausgeführt. Soweit klar.
Jetzt aber stelle ich folgende Funktion zur Verfügung:
function id_add(id, text) {
var div = document.createElement("div");
div.innerHTML = text;
var docFrag = document.createDocumentFragment();
while(div.firstChild)
docFrag.appendChild(div.firstChild);
document.getElementById(id).appendChild(docFrag);
}
und ändere das o.g. Script wie folgt:
var text = atob(document.getElementByID("b64").innerHTML);
id_add("klartext", text);
Nach allem, was ich gelesen habe sollte nun das in "text" enthaltene Script ausgeführt werden, da es direkt in das DOM injiziert wird. Was läuft schief?
Anmerkung: das Script liegt "tief vergraben" im "text", "text" sieht im Prinzip so aus:
<div id="eins">
<div id="zwei">
Laber laber laber
</div>
<div id="drei">
Laber laber laber
<script type="text/javascript">
document.writeln("Hallo Welt");
</script>
</div>
Laber laber laber
</div>
Aber das dürfte kein Störfaktor sein, oder?!