2011-01-14 9 views
0

Ich bin mit JQuery ein Skript-Tag zu einem div anhängen, Bsp .:jquery Ladeskript Konflikt

$("#special_div").append("<script src="http://blablabla.com/id.php?id=0000"></script>"); 

und das Skript zurückgibt:

document.write("<object ....></object>"); 

aber wenn ich es anhängen, alle mein HTML ist weg und nur dieses Tag wird geschrieben.

Kann mir jemand sagen, was falsch ist?

Antwort

0

Was ist falsch ist, dass Sie document.write() — verwenden oder zumindest der Autor dieses Skripts verwendet es. Das ist, was document.write() tut, wenn es nach aufgerufen wird, wurde das eigentliche Originaldokument vom Browser erstellt. Ich nehme Ihren Code in einigen jQuery Initialisierungsbaustein ist:

$(function() { 

    // your code somewhere in here ... 

}); 

So läuft es nur dann, wenn der Browser die Seite alles fertig bekommen hat. Aber an diesem Punkt wird ein neuer Anruf an document.write() so interpretiert, dass Sie komplett die aktuelle Seite durch neue Zeug ersetzen möchten.

Eine Sache zu versuchen wäre, ein in das Dokument (nicht mit document.write() !!) und dann setzen Sie das <script> Tag in das.

1

Ihre Angebote vor allem entkommen:

$("#special_div") 
    .append("<script src=\"http://blablabla.com/id.php?id=0000\"></script>"); 

Zusätzlich document.write in Ordnung ist je nachdem, wann sie aufgerufen wird.

Edit: entfernt anderen Text, andere Antworter über document.write klärte mich auf dieser: D Danke @ Ivo

0

Das Skript, das Sie laden document.write verwendet, aber Sie laden das Skript, nachdem die Seite bereits gewesen vollständig geladen, daher überschreibt document.write den Inhalt der Seite.

Weitere Gründe gegen die Verwendung von document.write sehen:
Why is document.write considered a "bad practice"?

es zu beheben, müssen Sie sich das Skript in der HTML-Quelle aufzunehmen.

0

nicht verwenden document.write aber appendChild die obejct Tag

1

Here ist die Erklärung anzufügen:

Jede document.write-Anweisung, die ausgeführt wird, nachdem die Seite geladen wurde eine neue Seite erstellen und überschreiben den gesamten Inhalt der aktuellen Seite