Wiebke: Funktion in document.write aufrufen

Hi Freaks
ich habe, auf dem Weg zu einem Spiel folgendes Problem, welches ich durch diesen Aufbau versucht habe darzustellen:

<html>
<head>

<script type="text/javascript">

function alertfenster()
{
alert("Du doof!")
}

function build()
{
document.write('<script type="text/javascript">alertfenster()</script>')
}

</script>

</head>

<body onload="build()">

</body>
</html>

Der Fehler liegt vermutlich in der document.write Zeile, auf jeden Fall sagt er mir nicht, dass ich doof sei.

hat da hemand ne Idee?

  1. Hi,

    Der Fehler liegt vermutlich in der document.write Zeile, auf jeden Fall sagt er mir nicht, dass ich doof sei.

    das sollte es aber. ;-)
    Weil Du das Script mitten in den body-Tag schreibst. Warum? Und warum so umständlich?

    freundliche Grüße
    Ingo

  2. Hallo,

    function build()
    {
    document.write('<script type="text/javascript">alertfenster()</script>')
    }

    [...]

    <body onload="build()">

    was du hier machst, ist natürlich heimtückisch. Das *kann* nicht funktionieren.

    Das onload-Event tritt ein, wenn der Browser mit dem Rendern des Dokuments fertig ist. Wenn du zu diesem Zeitpunkt document.write() verwendest, wird das geladene Dokument durch den neu ausgegebenen Quelltext *ersetzt*. Nach der Ausführung des Scripts besteht also dein gesamtes Dokument aus der einen Zeile

    <script type="text/javascript">alertfenster()</script>

    die für sich allein keinen Sinn mehr ergibt.

    Wenn du Teile des Dokuments dynamisch durch Javascript erzeugen willst, musst du das tun, während das Dokument gerendert wird, also z.B. indem du das document.write() mitten im body notierst - und zwar an der Stelle, wo der dynamische Inhalt eingesetzt werden soll.

    BTW, worin steckt überhaupt der Sinn, mit Javascript einen Script-Block zu erzeugen? Das kommt mir unsinnig vor, und ich bin nicht einmal sicher, ob das überhaupt geht.

    So long,

    Martin

    --
    Wenn der Computer wirklich alles kann,
    dann kann er mich mal kreuzweise.
    1. Hallo,

      ... und ich bin nicht einmal sicher, ob das überhaupt geht.

      Solange das Dokument als text/html ausgeliefert wird, funktioniert es - zumindest, wenn es direkt im head der Datei ausgeführt wird - , wird das Dokument aber als application/xhtml+xml ausgeliefert, dann funktioniert gar nichts mehr.
      Fazit:  Um zukünftige Mehrarbeit zu vermeiden, sollte man auf so eine Technik verzichten.

      Gruß
      Avalon