Problem mit JavaScript in separaten Dateien:
Woran liegt es ? Gibt es Abhilfe ?JavaScript-Funktionen, die in einer separaten Datei gespeichert sind, vertragen sich nicht mit JavaScript-Funktionen, die im Head definiert sind.
Entweder die eine oder die andere Funktion ist zu gebrauchen, aber nicht beide zusammen.
Hallo,
bisher konnte ich bei Problemen mit externen JS-Files die tatsächliche Ursache nicht eruieren. Wenn Fehler auftraten, meist ein Crash des Browsers, lief der gleiche Code, in der Datei definiert, meist fehlerfrei. Fest steht jedenfalls, daß einige Scripts funktionieren, andere nicht. Selbst das Einbinden mehrerer Dateien funktioniert durchaus.
Ein Beispiel:
<html>
<head>
...
<script language="JavaScript" src="js/default.js"></script>
<script language="JavaScript" src="js/menue.js"></script>
<script language="JavaScript" src="js/cookie.js"></script>
<script language="JavaScript">
... JavaScript-Code ...
</script>
</head>
<frameset>
...
</frameset>
</html>
funktioniert in unserem Intranet (NN4, IIS) seit mehreren Monaten störungsfrei.
Auch innerhalb von Frames kann lokaler und "globaler" gemischt Code verwendet werden. Die Referenz aus einem Frame heraus auf eine globale Funktion kann z.B. mittels top.globaleFunktion() oder besser parent.globaleFunktion() hergestellt werden. Mit Variablen funkioniert das übrigens genauso. Wird im Frame der <base target=...> Tag verwendet, geht die Referenzierung allerdings nicht mehr.
Auf diese Weise lassen sich auf der Hauptseite (die Datei mit der Definition des frameset) globale Funktionen und Variablen bündeln, die von allen Frames benötigt werden. Andererseits wird dieser zentrale Code auch nur einmal geladen, was insgesamt der Performance zugute kommt.
Meines Wissens gibt es - ohne den Einsatz von Server Side Includes (SSI) - keine andere Möglichkeit, mehrfach verwendeten Code zentral zu pflegen und wiederzuverwenden, was bei umfangreichen Sites unter dem Gesichtspunkts des Pflegeaufwands durchaus relevant ist (der Betriebswirt nennt das "total cost of ownership").
Bis demnähx
Jörg