Javascript in Ajax Response nicht automatisch ausführen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Javascript in Ajax Response nicht automatisch ausführen

    Hallo liebe Resourcer,

    ich habe ein Problem mit einer grundlegenden Eigenschaft von Javascript. Es geht um Ajax bzw. die Response, die Ajax zurück gibt. Enthält diese Javascript, wird dieses automatisch ausgeführt, noch bevor die Response an sich weiter verarbeitet wird.

    In meinem Fall hole ich mir XHTML Code mittels einem Ajax Request. Dieser XHTML Code enthält Javascript Abschnitte, die erst bei der Eingliederung der Response ins DOM ausgeführt werden sollen.

    Kann man die automatische Ausführung von Javascript Code in AJAX Responses umgehen? Wenn ja, wie?
    MM Newmedia | MeinBlog

  • #2
    Welchen Header sendet das Ajax-Script zurück? text/html oder text/xml?

    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Es ist ein text/html Header.

      Ich habe gestern Abend noch mal nachgeforscht. Zum Einsatz kommt die protoaculous.js Library, welche ein Zusammenschluss aus Prototype und Scriptaculous ist. In einem Ajax Request gibt prototype in seiner Dokumentation an, dass man über den Parameter evalJS per boolean Wert steuern könnte, ob Javascript sofort beim Erhalten der Response ausgeführt wird (true) oder eben nicht (false). Das funktioniert hier aber nicht. Prototype scheint hier einen Bug zu haben, denn egal welche Angabe zu diesem Parameter gemacht wird, erscheint zunächst das ausgeführte Javascript. Im Regelfall macht dies natürlich auch Sinn. Aber in meinem Fall nicht.

      Ich habe mir nun eine andere Lösung einfallen lassen. Bei den Inhalten handelt es sich um Werbebanner, die per Javascript eingebunden werden. Das Javascript erzeugt einen iframe, in welchem dann die Banner dargestellt werden. Anstatt dieses Javascript mit der Ajax Response auszuführen, werden diese nun als DIV Container im synchron geladenen Teil der Seite versteckt untergebracht. Bei bedarf werden diese versteckten Inhalte dann per Javascript in das DOM der Ajax Response eingebunden. Nicht schön, aber funktioniert.
      MM Newmedia | MeinBlog

      Kommentar


      • #4
        Warum liefert die Applikation den JavaScript-Code überhaupt aus, wenn er gar nicht gebraucht wird? Ist ja ziemlich sinnlos JavaScript-Code zu laden, der dann doch nicht ausgeführt werden soll.

        Kommentar


        • #5
          Eigentlich wird der dynamische Teil eines Templates geliefert, welcher zusätzlich mit Daten bestückt wird. Zu diesen Daten, welche im Template verankert sind, gehören eben auch die Javascript Abschnitte für die Banner. Diese werden jedoch ausgeführt, bevor die Response im schon vorhandenen DOM eingegliedert wird. Das ist der Haken an der Sache. Die Banner dürfen erst ausgeführt werden, wenn die Response bereits ins DOM eingegliedert wurde.

          Ist aber gelöst wie oben beschrieben.
          MM Newmedia | MeinBlog

          Kommentar

          Lädt...
          X