Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.8 veröffentlicht (17.10.16)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
JavaScript zum schluss laden
#1
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
Zitieren
#2
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.
Zitieren
#3
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"
Zitieren
#4
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 ^^
Was ist der Unterschied zwischen der Politik und der Informatik?
In der Informatik ignoriert man führende Nullen...
Zitieren
#5
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.
Zitieren
#6
Tjaa, nur weiß ich gerade gar nicht wie ich mein Script da in DOM umsetzen soll.
Zitieren
#7
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");
Zitieren
#8
Mit der Lösung von Animus gelöst. Danke.
Zitieren