Angehängtes HTML, das Javascript enthält, wird nicht ausgeführt. Wie kann ich es ausführen lassen?

8

Ich hänge ein HTML an, das Javascript enthält.

%Vor%

und

%Vor%

Diese beiden Codeteile sind in der großen Menge an HTML, die ich angehängt habe.

Sie funktionieren einwandfrei, wenn sie beim Laden der Seite bereits vorhanden sind, aber nicht beim Anhängen.

Was schlagen Sie mir vor? Benötigt es eine Sortieranforderung für das DOM, das JavaScript nach dem Anhängen neu zu interpretieren oder?

BEARBEITEN:

Nur noch ein paar Infos, ich bin mit diesem Problem, weil ich ein paar Sachen mit AJAX zur Datenbank hinzufüge, und beim Erfolg hänge ich das HTML dort an, wo es sein muss. So wie es bei den Kommentaren der Fall ist.

Bearbeiten2:

Selbst bei all der Diskussion darüber, danke für die Antworten, hat es funktioniert.

    
fmsf 03.03.2009, 20:28
quelle

5 Antworten

4

Ich würde es so machen:

Fügen Sie zuerst id Attribute zu Ihrem HTML hinzu:

%Vor%

Dann haben Sie Javascript, das auf dem onload-Ereignis der Seite läuft und sich an die Ereignisse anfügt, an denen Sie interessiert sind.

In PrototypeJS könnte es so aussehen:

%Vor%

Das Verwenden von etwas wie Prototype (oder jQuery) ist nett, weil es für die browserübergreifende Kompatibilität sorgt.

    
Mark Biek 03.03.2009, 20:38
quelle
3

Hängen Sie den HTML-Code über AJAX an? In diesem Fall müssen Sie das JavaScript, das Sie zurückgeben, manuell validieren (). Du könntest die Antwort in ein div einpacken und so etwas tun:

%Vor%

Wenn Sie einen Bibliothek-ähnlichen Prototyp verwenden, wäre das viel einfacher, da Sie die Antwort an die evalScripts () -Methode übergeben können.

    
robmerica 03.03.2009 20:38
quelle
1

Hängen Sie den HTML-Code an das Dokument an und fügen Sie dann das onclick-Ereignis programmatisch zum Objekt hinzu.

Das ist von meinem Kopf weg, aber ... Ich denke, Sie können es so machen:

IE:

%Vor%

FF:

%Vor%     
kemiller2002 03.03.2009 20:31
quelle
0

AJAX hat einige Macken ... besonders mit IE. Beispiel: Sie können die Eigenschaft innerHTML nicht verwenden, um etwas in ein Tabellenelement (in IE) einzufügen / zu aktualisieren. Es ist besser, die DOM-Funktionen zum Einfügen / Aktualisieren / Löschen von Elementknoten (oder zum Hinzufügen von Ereignishandlern) zu verwenden. Sie können die genannte Funktion eval () verwenden, um dynamisch geladenes JavaScript auszuführen, das das Dokument mithilfe von DOM-Objekten ändert.

    
toby 03.03.2009 20:48
quelle
0

Sie sollten addEventListener('click', /*...*/) verwenden, anstatt onclick in innerHTML oder was auch immer zu wählen.

IE ruft addEventListener etwas ganz anderes auf, also müssen Sie das auch kompensieren.

(Edit: IE nennt es attachEvent() . Hoffe das ist von Nutzen.)

    
flussence 03.03.2009 20:37
quelle

Tags und Links