Simon: mit Ajax importiertes Javascript wird nicht ausgeführt

Griasts eich,

ich habe ein div-objekt dessen Inhalt ich mit Ajax abrufe und dann mit innerHtml ändere.

Der abgerufene Inhalt enthält ein <script type="text/javascript">-Tag dessen Script nicht ausgeführt wird (auch nicht, wenn ich das gesamte Script in eine Funktion packe und diese vom anfordernden Dokument nach dem innerHtml aufrufe (Fehler: Meine Funktion "... is not definied")).

Muss der Fehler bei meinen Scripten liegen/Hab ich vergessen etwas zu beachten oder kann man gar mit Ajax-Requests angeforderte Javascripts nicht ausführen?

Danke

Simon

  1. Hallo Simon,

    Der abgerufene Inhalt enthält ein <script type="text/javascript">-Tag dessen Script nicht ausgeführt wird (auch nicht, wenn ich das gesamte Script in eine Funktion packe und diese vom anfordernden Dokument nach dem innerHtml aufrufe (Fehler: Meine Funktion "... is not definied")).

    Bestimmt geht das mit einer Callback-Funktion des Ajax-Requests selbst auch eleganter, aber eine weitere "dreckige" Möglichkeit wäre, am Ende deines Snippets einen Blindpixel mit zu includieren, über dessen onLoad-Event dann die Funktion aufgerufen wird.

    Gruß Gernot

    1. Danke Gernot,

      den Blindpixel habe ich getestet und er funktioniert, ist aber wie du schon sagtest unsauber.

      Die Callback-Funktion des Ajax-Requests möchte ich nicht verwenden, da ich mit Ajax bezwecken will, dass nur benötigter Code übertragen wird. Mit der Callback-Funktion müsste ich alle Scripte der jeweiligen Inhalte des divs in die anfordernde Datei schreiben.

      Notfalls werde ich also den Javascript-Code in ein onLoad-Event verpacken.

      Aber vlt hat jemand noch eine andere Lösung.?

  2. Habe eine weitere, elegantere Möglichkeit gefunden.

    Folgender Quelltext fügt ein <script>-Tag ein, dass das dem Inhalt zugehörige Javascript referenziert.

      
    var jvscript = document.createElement('script');  
    jvscript.setAttribute('type', 'text/javascript');  
    jvscript.setAttribute('src', 'javascripts/test.js');  
    document.getElementById('_head').appendChild(asd);  
    
    

    Ich führe den Code beim Handler des Ajax-Request aus.

    Griasts eich,

    ich habe ein div-objekt dessen Inhalt ich mit Ajax abrufe und dann mit innerHtml ändere.

    Der abgerufene Inhalt enthält ein <script type="text/javascript">-Tag dessen Script nicht ausgeführt wird (auch nicht, wenn ich das gesamte Script in eine Funktion packe und diese vom anfordernden Dokument nach dem innerHtml aufrufe (Fehler: Meine Funktion "... is not definied")).

    Muss der Fehler bei meinen Scripten liegen/Hab ich vergessen etwas zu beachten oder kann man gar mit Ajax-Requests angeforderte Javascripts nicht ausführen?

    Danke

    Simon

    1. Folgender Quelltext fügt ein <script>-Tag ein, dass das dem Inhalt zugehörige Javascript referenziert.

      var jvscript = document.createElement('script');
      jvscript.setAttribute('type', 'text/javascript');
      jvscript.setAttribute('src', 'javascripts/test.js');
      document.getElementById('_head').appendChild(asd);

        
      Sry, die 4. Zeile muss natürlich document.getElementById('\_head').appendchild(jvscript); lauten!