Peter: Dekodiertes Script ausführen

Beitrag lesen

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?!