Bürgle: ...innerHTML = "<script.... geht das irgendwie?

Hi!
Das Thema innerHTML war schon öfters dran, habe aber keine Lösung gefunden.
Ich wollte wissen, ob es irgendwie möglich ist, z.B. mit innerHTML
oder ähnlichem nicht nur Html-Code sondern auch lauffähigen Javascript-Code in ein Dokument zu schreiben.

Also in der Art:

...innerHTML="<script type="text/javascript">function demo(){...}</script>";

Bei mir klappt das nicht...müsste es klappen oder gibts eine Alternative, die sowas ermöglicht?

Danke für jeden Tipp,
Grüße, Bürgle
http://www.benotung.de

  1. Moin!

    Also in der Art:

    ...innerHTML="<script type="text/javascript">function demo(){...}</script>";

    Bei mir klappt das nicht...müsste es klappen oder gibts eine Alternative, die sowas ermöglicht?

    Ich kann mir spontan nicht vorstellen, welche Skripte du auf diese Weise nachdefinieren wollen würdest. Eigentlich sollten alle deine Wünsche mit vordefinierten Javascript-Funktionen und Variablen abzudecken sein.

    - Sven Rautenberg

    --
    Diese Signatur gilt nur am Freitag.
    1. Hi!

      Ich kann mir spontan nicht vorstellen, welche Skripte du auf diese Weise nachdefinieren wollen würdest. Eigentlich sollten alle deine Wünsche mit vordefinierten Javascript-Funktionen und Variablen abzudecken sein.

      Der Grund, warum ich das möchte, liegt in der von mir geplanten internen Struktur, die -falls es so gehen sollte- ordentlicher und übersichtlicher wäre.

      Grüße, Bürgle.

      1. Moin!

        Der Grund, warum ich das möchte, liegt in der von mir geplanten internen Struktur, die -falls es so gehen sollte- ordentlicher und übersichtlicher wäre.

        Javascript hat nichts mit dem HTML-Strukturbaum zu tun. Wenn du Javacriptcode dynamisch generieren willst, benutze eval() (auch wenn das durchaus böse ist).

        Ich kann mir aber ehrlich gesagt kaum vorstellen, dass etwas, was mit selbstmodifizierendem Code arbeitet, übersichtlicher sein soll als etwas, was mit vordefinierten Funktionen arbeitet, denen passende Variablen übergeben werden. Irgendwo mußt du ja schließlich schon festlegen, was genau gemacht werden soll - du mußt den Code also vorher kennen.

        Warum den Aufwand mit dem dynamischen Definieren? Da bleibst du leider herrlich unkonkret. Nur weil _du_ derzeit glaubst, deine Idee sei gut, muß sie das noch lange nicht sein. Du kennst hoffentlich dieses Forum gut genug: Hier wird alles in Frage gestellt, insbesondere angeblich geniale, vom Frager ausgedachte Lösungswege, die "nur noch" realisiert werden müssen. Meist gibts Lösungen, die mit diesen Lösungswegen nichts mehr zu tun haben, weil sie besser oder einfacher sind bzw. weil sie im Gegensatz zum geplanten Lösungsweg funktionieren.

        Also: Was genau willst du dynamisch definieren? Werde konkret! Beschreibe dein Problem und deine Lösungsidee. Bislang hast du nur Andeutungen gemacht - damit kann keiner hier arbeiten.

        - Sven Rautenberg

        --
        Diese Signatur gilt nur am Freitag.
  2. Hi,

    ...innerHTML="<script type="text/javascript">function demo(){...}</script>";

    Dir ist bewußt, daß das erste Vorkommen der Zeichenfolge </ (spitze Klammer auf, Schräger) den Inhalt des Script-Elements beendet und daß eine solche Zeichenfolge innerhalb eines Scripts daher aufgebrochen werden muß, z.B. als </ ? (ja, ich weiß, ich habe geplenkt, aber ich muß ja das ? von der Zeichenfolge abtrennen...

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.
    Der Pessimist: Das Glas ist halbleer.
    Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    1. Hi,

      ...innerHTML="<script type="text/javascript">function demo(){...}</script>";

      Dir ist bewußt, daß das erste Vorkommen der Zeichenfolge </ (spitze Klammer auf, Schräger) den Inhalt des Script-Elements beendet und daß eine solche Zeichenfolge innerhalb eines Scripts daher aufgebrochen werden muß, z.B. als </ ? (ja, ich weiß, ich habe geplenkt, aber ich muß ja das ? von der Zeichenfolge abtrennen...

      Hi!
      Ja, auch das habe ich beim Experimentieren bereits versucht, es nützte nicht wirklich was.
      Womöglich hatte ich noch was anderes falsch gemscht.
      Geht das aber prinzipiell?

      Grüße, Bürgle

      1. Hallo,

        Womöglich hatte ich noch was anderes falsch gemscht.
        Geht das aber prinzipiell?

        es geht m.E. prinzipiell nicht weil Scripte beim Laden abgearbeitet
        werden, das ersetzte innerHTML aber nicht "lädt".
        Es geht also eher bei Netscape 4 weil da ein neues document erzeugt
        wird -write()-.
        Du brauchst also Unterstützung durch einen Event, onLoad geht
        aber bei den wenigsten Elementen.
        Du kannst ja ein span mit onMouseOver={function demo(){..}demo();}
        verwenden, aber für onLoad bräuchte es body, der existiert aber
        schon.

        Grüsse

        Cyx23

  3. Hallo Bürgle,

    ...innerHTML="<script type="text/javascript">function demo(){...}</script>";

    Bei mir klappt das nicht...müsste es klappen oder gibts eine Alternative, die sowas ermöglicht?

    Du kannst jederzeit externe Scripte ins Dokument laden:

    var newScript=document.createElement('script');
    newScript.type='text/javascript';
    newScript.src='new.js';
    document.getElementsByTagName('head')[0].appendChild(newScript);

    Im Mozilla kann man statt der src-Angabe auch einen Text-Knoten mit dem Script-Code erzeugen, IE macht das aber leider nicht.

    Grüße, Stefan