Das ist schon ein guter Tipp. Aber ein Script muss entsprechend umgeschrieben werden.
Schlecht, weil es ein externes ist.
Wenn das Script von dir nicht änderbar ist und synchron mit document.write arbeitet, dann kannst du das Script nicht asynchron einbinden, sondern musst es direkt mit <script src=""> einbinden. Das Script muss schon darauf vorbereitet sein.
Wenn es asynchron und damit unabhängig vom Parsen des HTML-Codes aufgerufen wird, dann entfernt es den gesamten Dokumentinhalt und ersetzt ihn.
Es wird ja synchron eingehängt.
Ja, aber asynchron ausgeführt. Wenn es ausgeführt wird, ist das Dokument höchstwahrscheinlich schon geparst, daher ist es willkürlich, wo document.write Inhalte dem Dokument hinzufügt.
<!-- und vielleicht kann mir jemand nebenher noch diese
sonderbare Klammersyntax eläutern -->
Das ist eine anonyme Funktion, die sofort ausgeführt wird. Sinn davon ist, dass man eine lokale Variable anlegen kann, die nicht den globalen Scope (das globale window-Objekt) „verunreinigt“. Siehe http://molily.de/js/organisation-module.html#scope.
was ich in abgeänderter Form aus genau dem zitierten Artikel habe. Nur dass dort das Script in den Header verfrachtet wird und die Ausgabe dann in meinem Fall gleich nach dem öffnenden body-Tag erscheint.
Wie gesagt, wenn du den HTML-Code an einer bestimmten Stelle einfügen willst, dann kann das Script kein document.write verwenden. Im Beispiel müsstest du den sourceWrapper ansprechen und z.B. mit getElementById und innerHTML:
document.getElementById('sourceWrapper').innerHTML = 'Ausgabe';
Grüße, Mathias