*.js in *.js includieren
hansmüller
- javascript
0 Ashura0 H2O0 H-P Ortner3 Gunnar Bittersmann0 at
Wie kann ich eine JavaScriptdatei in einer anderen JavaScriptdatei verwenden?
in HTML geht das ja über <script ... scr="...">, aber wie geht das inerhalb der *.js-Datei???
Hans
Hallo hansmüller.
Wie kann ich eine JavaScriptdatei in einer anderen JavaScriptdatei verwenden?
Gar nicht. Die einzige Möglichkeit, die mir einfiele, wäre das dynamische http://de.selfhtml.org/javascript/objekte/document.htm#create_element@title=Generieren und in den Dokumentenbaum http://de.selfhtml.org/javascript/objekte/node.htm#append_child@title=Einhängen eines http://de.selfhtml.org/javascript/objekte/htmlelemente.htm#script@title=script–Elementes.
Einen schönen Dienstag noch.
Gruß, Ashura
Gar nicht.
Schad... :-/ Dann mach ich das halt übern php-include. Wird wohl das Einfachste sein.
Hans
Hallo hansmüller.
document.write("<script src='datei.js' type='text/javascript'></script>");
müsste den Effekt erzielen den du willst.
Siehe hierzu: </archiv/2005/3/t104638/>
Man liest sich, H2O
Hallo Hans!
Wie kann ich eine JavaScriptdatei in einer anderen JavaScriptdatei verwenden?
in HTML geht das ja über <script ... scr="...">, aber wie geht das inerhalb der *.js-Datei???
Ich denke das sollte mit ssi gehen wenn die *.js-Dateien auf einem Webserver liegen:
http://de.selfhtml.org/servercgi/server/ssi.htm
<!--#include file="..." -->
Viele Grüße
H-P Ortner
hallo,
Wie kann ich eine JavaScriptdatei in einer anderen JavaScriptdatei verwenden?
Ich denke das sollte mit ssi gehen
Nein, damit kommst du nicht zu dem gewünschten Ergebnis.
Grüße aus Berlin
Christoph S.
Hello out there!
Ich denke das sollte mit ssi gehen
Nein, damit kommst du nicht zu dem gewünschten Ergebnis.
Äh doch!? Warum sollte es nicht gehen?
See ya up the road,
Gunnar
hallo Gunnar,
Äh doch!? Warum sollte es nicht gehen?
Weil dann der Server angewiesen werden müßte, *.js als *.shtml zu parsen, was ein heilloses Durcheinander ergibt.
Grüße aus Berlin
Christoph S.
Hello out there!
Äh doch!? Warum sollte es nicht gehen?
Weil dann der Server angewiesen werden müßte, *.js als *.shtml zu parsen,
Nein, nicht als *.shtml, sondern nach SSI.
was ein heilloses Durcheinander ergibt.
AddType text/html shtml
AddType text/javascript js
AddHandler server-parsed shtml js
Wo ist da ein Durcheinander?
See ya up the road,
Gunnar
hallo Gunnar,
AddType text/html shtml
AddType text/javascript js
AddHandler server-parsed shtml js
> Wo ist da ein Durcheinander?
Verlange bitte nicht, daß ich das teste. Zu vermuten steht (da nicht getestet), daß dann eben \_alle\_ \*.js als SSI behandelt werden. Das bedeutet: der darin enthaltene Code wird nicht mehr zwingend ausgeführt, sondern dargestellt - allerdings in Abhängigkeit von der gewählten include-Syntax. Wenn du sowas in der Serverkonfiguration vorsiehst, funktioniert vermutlich
<script type="text/javascript" src="javascript.js"></script>
nicht mehr, da es ja vom Server als SSI ausgeliefert werden würde. Und \_das\_ meinte ich mit "heilloses Durcheinander". Allerdings: wie bereits angegeben, habe ich keine Lust, das zu testen. Probiere du mal. Erhältst du ein funktionierendes Ergebnis, nehme ich das gerne zur Kenntnis.
Grüße (in Erwartung deiner Mißerfolgsmeldung) aus der Nachbarschaft
Christoph S.
--
[Visitenkarte](http://community.de.selfhtml.org/visitenkarten/view.php?key=26)
ss:| zu:) ls:& fo:) va:) sh:| rl:|
Hello out there!
AddHandler server-parsed shtml js
Zu vermuten steht (da nicht getestet), daß dann eben _alle_ *.js als SSI behandelt werden.
Ja. Natürlich sollte man, wenn man das wirklich einsetzt, nur die JavaScript-Dateien durch die SSI-Engine schicken, die das nötig haben: entweder diese alle in .htaccess auflisten oder doch besser eine andere Endung (sjs) vergeben.
Das bedeutet: der darin enthaltene Code wird nicht mehr zwingend ausgeführt, sondern dargestellt
Ähm, du weißt auch nachts um halb drei noch, was ein Webserver tut?! Der Server stellt nichts dar, sondern führt aus – bspw. auch SSI. Um was es sich dabei für Dateien handelt (HTML, JavaScript, ...) ist ihn dabei sowas von schnurzpiepegal.
Der Client bekommt natürlich von alledem nichts mit; er erhält eine JavaScript-Datei, in der von SSI nichts mehr zu sehen ist, dafür steht der aus der anderen Datei eingefügte Code drin.
funktioniert vermutlich
<script type="text/javascript" src="javascript.js"></script>
nicht mehr, da es ja vom Server als SSI ausgeliefert werden würde.
Ähm, du weißt auch nachts um halb drei noch, was ein Webserver tut?! Er liefert nichts als SSI aus, sondern führt SSI aus. Dabei ist ihm sowas von schnurzpiepegal, als was er das am Ende ausliefert (HTML, JavaScript, ...). Aber ich wiederhole mich.
(in Erwartung deiner Mißerfolgsmeldung)
Da muss ich dich enttäuschen:
.htaccess:
AddHandler server-parsed sjs
(mehr ist gar nicht nötig)
foo.js:
var foo = 'foo';
bar.sjs:
<!--#include virtual="foo.js" -->
alert(foo);
index.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>TEST</title>
<script type="text/javascript" src="bar.sjs"></script>
</head>
<body>
</body>
</html>
See ya up the road,
Gunnar
Hell-O!
<blick class="ungläubig entsetzt">
Bist du jetzt etwa vom Liedermacher zum Gangstarappa mutiert?!
</blick>
Siechfred
Hello out there!
<blick class="ungläubig entsetzt">
Bist du jetzt etwa vom Liedermacher zum Gangstarappa mutiert?!
</blick>
Das nicht, aber ... Du kannst deinen ungläubig entsetzten Blick beibehalten: Meine Domain gunnarbittersmann.de liegt *schäm* immer noch auf Webspace ohne SSI, PHP, ...
Deshalb benutzte ich für solche Dinge diese andere, mit deren Inhalt, Gestaltung und Umsetzung außerhalb von TEST ich nichts zu tun habe.
See ya up the road,
Gunnar
Hell-O!
Meine Domain gunnarbittersmann.de liegt *schäm* immer noch auf Webspace ohne SSI, PHP, ... Deshalb benutzte ich für solche Dinge diese andere, mit deren Inhalt, Gestaltung und Umsetzung außerhalb von TEST ich nichts zu tun habe.
Das wäre ja so, als ob ich als bekennender Headbanger meine Perl- und PHP-Versuche auf der Domain von Florian Silbereisen testen würde ;-)
Siechfred
Hello out there!
in HTML geht das ja über <script ... scr="...">,
^^
Nein, so geht’s nicht. ;-)
aber wie geht das inerhalb der *.js-Datei???
Wozu das? Warum bindest du nicht beide Scripte im HTML ein?
<script type="text/javascript" src="foo.js"></script>
<script type="text/javascript" src="bar.js"></script>
See ya up the road,
Gunnar
Hallo!
Wozu das? Warum bindest du nicht beide Scripte im HTML ein?
<script type="text/javascript" src="foo.js"></script>
<script type="text/javascript" src="bar.js"></script>
Ich mach nicht viel mit JavaScript aber bei umfangreicheren Projekten könnte es interessant sein, sie in so etwas wie Module zu unterteilen.
Eine etwas aufwendigere Funktion könnte so wiederverwendet werden.
Wenn nun ein JavaScript diese Funktion braucht, wäre es doch schön sie dort direkt einbinden zu können.
Also wenn foo.js von bar.js benötigt wird, von hello.js nicht, aber von world.js schon, so fände ich es praktisch jede Kombination von bar.js, hello.js und world.js verwenden zu können ohne darüber nachdenken zu müssen, ob ich foo.js jetzt auch einbinden muss oder nicht.
Für ein größeres Projekt würde ich auch am Beginn nach einem Konzept dafür suchen, wie Hans das jetzt gemacht hat.
Viele Grüße
H-P Ortner
hallo,
Also wenn foo.js von bar.js benötigt wird, von hello.js nicht, aber von world.js schon, so fände ich es praktisch jede Kombination von bar.js, hello.js und world.js verwenden zu können ohne darüber nachdenken zu müssen, ob ich foo.js jetzt auch einbinden muss oder nicht.
Das kannst du auf genau diese Weise tun, die Gunnar vorgeschlagen hat. In "bar.js" können alle Funktionen aus "foo.js" erneut aufgerufen und in neuen Funktionen verwendet werden.
Grüße aus Berlin
Christoph S.
Hallo Cristoph!
Also wenn foo.js von bar.js benötigt wird, von hello.js nicht, aber von world.js schon, so fände ich es praktisch jede Kombination von bar.js, hello.js und world.js verwenden zu können ohne darüber nachdenken zu müssen, ob ich foo.js jetzt auch einbinden muss oder nicht.
Das kannst du auf genau diese Weise tun, die Gunnar vorgeschlagen hat. In "bar.js" können alle Funktionen aus "foo.js" erneut aufgerufen und in neuen Funktionen verwendet werden.
So weit hatte ich das schon verstanden. Aber ich muss in der HTML Datei immer überlegen, was ich jetzt mit einbinden muss.
Wenn ich nur hello.js verwende, sollte ich foo.js nicht einbinden, weil das dann ja umsonst geladen und geparst wird. Wenn ich world.js verwende, muss ich es einbinden weil sonst kommt irgendwann eine Fehlermeldung wenn die fehlende Funktion gebraucht wird.
Dazu muss ich mir diese Abhängigkeiten merken, eine Doku darüber anfertigen, oder im schlimmsten Fall immer wieder testen.
Wenn das direkt eingebunden wäre, müsste ich mich nicht darum kümmern.
Viele Grüße
H-P Ortner
Hello out there!
Aber ich muss in der HTML Datei immer überlegen, was ich jetzt mit einbinden muss.
Das entfällt natürlich bei serverseitigen Includes. Serverseitig sieht dann auch alles schön modular aus. Aber ...
Wenn du das Modul foo.js öfter verwendest (in bar.js, baz.js, ...) und es serverseitig in diese einfügst, wird dieses Stück Code immer wieder zum Client geschickt. Das kostet Traffic – und für den Nutzer Ladezeit. Clientseitig ist von Modularität nichts mehr zu spüren.
Gibst du hingegen im HTML an, welche Module du gerade für diese Webseite benötigst, werden schon übertragene (weil auch auf anderen Seiten benutzte) Module aus dem Cache geholt.
See ya up the road,
Gunnar
Hell-O!
So weit hatte ich das schon verstanden. Aber ich muss in der HTML Datei immer überlegen, was ich jetzt mit einbinden muss.
Warum das? Du kannst die JS-Ressourcen auch mit Hilfe des DOM dynamisch nachladen, wenn du sie brauchst. So als Denkanstoß:
function DynaLoad(source) {
var sElem = document.createElement('script');
sElem.type = 'text/javascript';
sElem.src = source + '.js';
document.getElementsByTagName('head')[0].appendChild(sElem);
}
if(typeof window['gesuchte_funktion'] == 'undefined') {
DynaLoad('script_mit_gesuchter_funktion');
alert('Geladen.');
}
gesuchte_funktion();
Das Ganze in einem Basis-Script gespeichert, das als Einziges zusammen mit der HTML-Datei geladen wird. Alle anderen Komponenten werden durch o.g. Code bei Bedarf nachgeladen.
Siechfred
Hallo Siechfried!
So weit hatte ich das schon verstanden. Aber ich muss in der HTML Datei immer überlegen, was ich jetzt mit einbinden muss.
Warum das? Du kannst die JS-Ressourcen auch mit Hilfe des DOM dynamisch nachladen, wenn du sie brauchst.
Noch einmal zum Beispiel:
Also wenn foo.js von bar.js benötigt wird, von hello.js nicht, aber von world.js schon, so fände ich es praktisch jede Kombination von bar.js, hello.js und world.js verwenden zu können ohne darüber nachdenken zu müssen, ob ich foo.js jetzt auch einbinden muss oder nicht.
Mit der von dir gezeigten Methode kann bar.js nicht foo.js dynamisch nachladen. Zumindest bekomm ich es nicht hin.
Und wenn ich das in der HTML-Datei machen muss, kann ich es ja gleich einbinden wie Gunnar oben geschrieben hat.
Irgendwie kann ich nicht glauben, dass es keine Möglichkeit gibt, dass eine JS-Datei eine andere Aufruft ohne den Umweg über html gehen zu müssen.
Viele Grüße
H-P Ortner
Hell-O!
Mit der von dir gezeigten Methode kann bar.js nicht foo.js dynamisch nachladen. Zumindest bekomm ich es nicht hin.
Doch, das geht schon, allerdings brauchst du zwingend DOM dafür. In bar.js kannst du die Funktion Dynaload unterbringen, die bei Bedarf - also wenn eine Funktion aus foo.js benötigt wird - ein Script-Element in den Dokumentenbaum einhängt und so foo.js dynamisch nachlädt.
Irgendwie kann ich nicht glauben, dass es keine Möglichkeit gibt, dass eine JS-Datei eine andere Aufruft ohne den Umweg über html gehen zu müssen.
Ist aber so, denn so ist das grundlegende Konzept von Javascript: Es wird immer aus einer HTML-Datei heraus geladen.
Siechfred
Hallo Siechfred!
Irgendwie kann ich nicht glauben, dass es keine Möglichkeit gibt, dass eine JS-Datei eine andere Aufruft ohne den Umweg über html gehen zu müssen.
Ist aber so, denn so ist das grundlegende Konzept von Javascript: Es wird immer aus einer HTML-Datei heraus geladen.
Da hat jemand ein Tutorial für Javasript als Sprache für ASP geschrieben: http://aspjavascript.com/lesson.asp
Javascipt funktioniert also auch ohne in HTML eingebettet zu sein.
Und wie lösen die dann das Modularisieren? In Lesson 13 mit SSI was serverseitig ja OK ist.
Clientseitig brauche ich natürlich den Browser, der Lösungsansatz das in das DOM einzubauen drängt sich also auf.
Danke der Denkanstoß scheint in die richtige Richtung zu führen. Vermutlich bin ich daran gescheitert, dass der IE mit dem ich das probiert habe, den neuen Code im selben Programmteil noch ignoriert.
Sollte das in den nächsten Tagen noch einmal in aller Ruhe ausprobieren.
Viele Grüße
H-P Ortner
Tach,
Da hat jemand ein Tutorial für Javasript als Sprache für ASP geschrieben: http://aspjavascript.com/lesson.asp
das ist JScript und kein Javascript, Javascript kennt das ab Lektion 1 verwendete Response-Objekt nicht.
mfg
Woodfighter
Hallo.
scr="..."
"Sorry, could resist"?
MfG, at
Hello out there!
scr="..."
"Sorry, could resist"?
Nein, „da fehlt ein n.“
SCNR & See ya up the road,
Gunnar