MyBB.de Forum
JavaScript zum schluss laden - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Sonstiges (https://www.mybb.de/forum/forum-1.html)
+--- Forum: Programmierung (https://www.mybb.de/forum/forum-32.html)
+--- Thema: JavaScript zum schluss laden (/thread-11532.html)



JavaScript zum schluss laden - Sebastian1990 - 11.11.2008

Hi allerseits,

habe mich jetzt etwas mit JavaScript auseinander gesetzt.
Problem ist folgendes. Ich habe den JavaScript Code (die Werbung) in .js Dateien ausgelagert.

Rufe sie im Header Bereich so auf:
<script type="text/javascript" src="/jscripts/advertisement_head.js"></script>


und dann die Funktion advertisement_head(); an der gewünschten Stelle.
Wie kann ich dem jetzt sagen das er warten soll bis die Seite zu Ende geladen ist? Ich habe da schon was mit

<body onload="advertisement_head();"></body>

versucht, aber dann passiert was komisches:
Er lädt die Seite und sobald sie zu ende geladen ist, ersetzt er die gesamte seite durch die werbung Rolleyes


Sebastian


RE: JavaScript zum schluss laden - frostschutz - 11.11.2008

Das onload sollte ja eigentlich richtig sein, es wird ja wie du beschreibst auch ausgeführt wenn die Seite zu Ende geladen ist. Warum du dann in deinem JavaScript die ganze Seite durch was anderes ersetzt musst du selbst wissen?

Du müsstest die gewünschte Stelle halt irgendwie markieren (HTML Element mit eindeutiger ID) und dann im JavaScript die Stelle übers DOM finden und dort deine Werbung einfügen.


RE: JavaScript zum schluss laden - Sebastian1990 - 11.11.2008

Hier mal nen simples beispiel. Kann jeder als .html Datei erstellen und Lokal ausführen:

Zitat:<html>
<head>
<title>Test</title>

<script type="text/javascript" src="http://www.computerhartware.de/jscripts/advertisement.js"></script>

öäikjt

<script type="text/javascript">
window.setTimeout("advertisement()", 2000);
</script>
</head><body>
</body></html>


Er wartet 2 Sekunden und gibt dann die Werbung aus.
Löscht aber den vorherigen Text "öäikjt"


RE: JavaScript zum schluss laden - Zwoetzen - 11.11.2008

Ich glaub du darfst nicht direkt document.write() aufrufen, wenn das Script erst nach Vollendung der Seite gestartet wird.

Mach es doch, wie Frostschutz vorgeschlagen hat:
Ein Div mit der ID "advert" definieren.
Per Document.GetElementByID("advert").innerHTML = xyz dann den Inhalt des Divs festlegen.

PS: Bin bei den JS-Funktionsnamen nicht sicher, lieber nochmal nachprüfen ^^


RE: JavaScript zum schluss laden - frostschutz - 11.11.2008

Vorsicht, innerHTML setzen ist zwar schön einfach, aber funktioniert nicht überall. Der IE6 macht HTML kaputt wenn es über innerHTML gesetzt wird. Ist mir leider selbst mal wiederfahren als ich in JavaScript einen Telnet-Client geschrieben habe. Besser übers DOM arbeiten, im DOM kann man nicht nur Elemente finden sondern auch Elemente hinzufügen. Wenn das natürlich mehr als z.B. nur ein <img>-Element ist wird es schnell kompliziert.

Jedenfalls im Hinterkopf behalten, wenn bei irgendwelchen Usern Murks rauskommt, ist innerHTML das erste was man rauswerfen sollte.


RE: JavaScript zum schluss laden - Sebastian1990 - 11.11.2008

Tjaa, nur weiß ich gerade gar nicht wie ich mein Script da in DOM umsetzen soll.


RE: JavaScript zum schluss laden - XxAnimusxX - 11.11.2008

Event.observe ist das Stichwort Smile
Code:
Event.observe(document, "dom:loaded", advertisement_head);

Wenn du nun ein bestimmtes HTML-Element ansprechen und den Inhalt ändern möchtest, machst du das wie folgt:
Code:
$("ID-DEINES-HTML-ELEMENTS").update("INHALT");



RE: JavaScript zum schluss laden - Sebastian1990 - 11.11.2008

Mit der Lösung von Animus gelöst. Danke.