Homepage selbermachen 7.852 Themen, 35.619 Beiträge

JavaScript-Funktion in Datei über onload ansprechen

ColinFinck / 6 Antworten / Baumansicht Nickles

Hallo!
Habe folgendes Problem: Ich habe eine JavaScript-Datei über <script language="JavaScript" src="script.js"> eingebunden. Über <a href="javascript:test()"> kann ich zwar nun auf die Funktion test() dieser Datei zugreifen, aber über <body onload="test()"> geht es nicht. Wie mache ich es hier?


Vielen Dank im Voraus!


Colin

bei Antwort benachrichtigen
Maxx Stone ColinFinck „JavaScript-Funktion in Datei über onload ansprechen“
Optionen

Hi ColinFinck,

erstmal ist language=blabla nicht w3c konform. Nimm also type="text/javascript".
Weiterhin muss die Verlinkung VOR dem Scriptaufruf stehen, z.B. im Head. Und zu guter(?) letzt, die Scriptdatei muss geladen sein wenn du auf sie zugreifst. Insofern ist das was du machst "problematisch".

Bau die Test() in das HTML-Dokument oder starte die Funktion verzögert und mit Fehlerroutine.

Gruß
Maxx Stone

bei Antwort benachrichtigen
xafford Maxx Stone „Hi ColinFinck, erstmal ist language blabla nicht w3c konform. Nimm also type...“
Optionen

Wenn ein Script im Head verlinkt wurde, dann steht es bei dem Event onLoad für das Body-Tag auf jeden Fall schon zur Verfügung, das ist also unproblematsich, selbst wenn der Link im Body wäre, da das onLoad-Event erst eintritt, wenn alle Elemente geladen sind, also auch ausgelagerte. Daran kann es also nicht liegen.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Maxx Stone xafford „Wenn ein Script im Head verlinkt wurde, dann steht es bei dem Event onLoad für...“
Optionen

Hi xafford,

dass das Script bereits im Head verlinkt wurde, habe ich so nicht herausgelesen.

Das onLoad-Event (im HTML-Dokument) tritt afaik ein wenn das HTML-Dokument geladen ist. Das hat mir mal mein Vorhaben einen simplen Preloader (onload=überlagertesBild-unsichtbar-machen) einzubauen verhagelt :-)

Wenn das HTML-Document komplett geladen ist, die script.js aber noch nicht beim Besucher "angekommen" ist -> Fehler

Gruß
Maxx Stone

bei Antwort benachrichtigen
xafford Maxx Stone „Hi xafford, dass das Script bereits im Head verlinkt wurde, habe ich so nicht...“
Optionen

Nene, das stimmt so nicht. onLoad tritt ein, wenn das Dokument komplett geladen ist, inklusive eingebundener Scripte, Styles, Grafiken die sich innerhalb des Tags befinden, zumindest bei IE und der Gecko-Engine. Von der Seite her kann also nix passieren.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
ColinFinck xafford „Nene, das stimmt so nicht. onLoad tritt ein, wenn das Dokument komplett geladen...“
Optionen

Vielen Dank für die Antworten. Bei mir lag es an einem Fehler in der JS-Datei. Jetzt klappt es auch über onload.

mfg Colin

bei Antwort benachrichtigen
Maxx Stone xafford „Nene, das stimmt so nicht. onLoad tritt ein, wenn das Dokument komplett geladen...“
Optionen

Hi xafford,

hab jetzt nochmal getestet und das geht mit der Gecko-Engine tatsächlich so wie DU geschrieben hast.

<html>
<head>
<script type="text/javascript">
var i=0;
var j=0;
function test0() {
i++;
document.getElementById("z0").innerHTML = "Nein "+i;
document.images[0].complete == true? document.getElementById("z0").innerHTML="Ja" : setTimeout("test1()", 500);
}
function test1() {
j++;
document.getElementById("z1").innerHTML = "Nein "+j;
document.images[1].complete == true? document.getElementById("z1").innerHTML="Ja" : setTimeout("test1()", 500);
}
</script>
</head>
<body onload="alert('onLoad ist fertig.');">
Grafiken die sich innerhalb des Tags befinden:
<br />
<img src="file:///a:/Bild.bmp" height="50" width="100" alt="a:Bild.jpg" title="riesen Bild 1" />
<br />
http://www.battlerat.de/triker/die2.JPG" height="216" width="288" alt="bitte nicht warten (71kb)." title="riesen Bild 2" />
<br />
<a href="javascript:test0();">Ist "Bild.bmp" von der Diskette schon geladen?</a>
<div id="z0">.</div>
<br />
<a href="javascript:test1();">Sind die "Männer ihres Vertrauens" geladen?</a>
<div id="z1">.</div>
</body>
</html>


Wo dann mein damaliges Problem lag ist mir jetzt schleierhaft.
Vielleicht liegt der Schlüssel darin: "onLoad tritt ein, wenn das Dokument komplett geladen ist, inklusive eingebundener Scripte, Styles, Grafiken die sich innerhalb des Tags befinden,"
Ich hatte Flashdateien mit Javascript etc. im head, onload im body, hmm?

Thx für die Korrektur,
Maxx Stone

bei Antwort benachrichtigen