Beiträge: 391
Themen: 79
Registriert seit: 27.04.2007
MyBB-Version: 1.6.10
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
Sebastian
Beiträge: 2.318
Themen: 13
Registriert seit: 09.11.2008
11.11.2008, 15:17
(Dieser Beitrag wurde zuletzt bearbeitet: 11.11.2008, 15:19 von frostschutz.)
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.
Beiträge: 391
Themen: 79
Registriert seit: 27.04.2007
MyBB-Version: 1.6.10
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"
Beiträge: 490
Themen: 49
Registriert seit: 22.12.2006
MyBB-Version: 1.6.2
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...
Beiträge: 2.318
Themen: 13
Registriert seit: 09.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.
Beiträge: 391
Themen: 79
Registriert seit: 27.04.2007
MyBB-Version: 1.6.10
Tjaa, nur weiß ich gerade gar nicht wie ich mein Script da in DOM umsetzen soll.
Beiträge: 162
Themen: 10
Registriert seit: 11.04.2007
MyBB-Version: 1.2.9
11.11.2008, 21:19
(Dieser Beitrag wurde zuletzt bearbeitet: 11.11.2008, 21:23 von XxAnimusxX.)
Event.observe ist das Stichwort
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");
Beiträge: 391
Themen: 79
Registriert seit: 27.04.2007
MyBB-Version: 1.6.10
Mit der Lösung von Animus gelöst. Danke.