js-datei dynamisch einbinden
Michael
- javascript
hallo,
kann man zur Laufzeit eine js-datei per javascript dynamisch einbinden?
<script....>
...
[js-Datei einbinden]
...
</script>
Als Alternative zur gewöhnlichen <script ... src="datei.js"> Methode.
Gab es nicht bei js auch so einen include-Befehl? *schongesuchthab*
Hab schon dran gedacht per js die src-Eigenschaft zu ändern und in den Quelltext nur ein Dummy einzufügen:
<script type=text/javascript></script>
Nur kann man doch keine name-Eigenschaft für Scripts verwenden, oder? Wie soll ich denn per Index rausfinden, welches Script ich gerade zu fassen habe?
... document.scripts[0].scr="..." <- welches hab ich dann?
... document.scripts("blabla")... <- sowas geht wohl gar nicht, oder?
Vielen Dank im voraus!
Schöne Grüße
Michael
Als Alternative zur gewöhnlichen <script ... src="datei.js"> Methode.
Gab es nicht bei js auch so einen include-Befehl? *schongesuchthab*
Nein gibt es nicht.
Struppi.
Nein gibt es nicht.
Struppi.
Schade :) - Aber geht ja auch anders.. auch wenn ich das als Gebastel empfinde.
Supi.. hat sich alles erledigt - hab's schon:
<script type=text/javascript id="schkript"></script>
<script type=text/javascript><!--
function jc-include-gedoens()
{
var lnk = "http://www.abc.de/test.js";
document.scripts("schkript").src=lnk;
}
--></script>
.. geht also doch... der Zugriff per Name...
<script type=text/javascript id="schkript"></script>
<script type=text/javascript><!--
function jc-include-gedoens()
{
var lnk = "http://www.abc.de/test.js";
document.scripts("schkript").src=lnk;
}
--></script>.. geht also doch... der Zugriff per Name...
In welchem Browser geht das denn?
Struppi.
In welchem Browser geht das denn?
Opera 7.23 und IE 6.0
In welchem Browser(n) geht das denn nicht?
Opera 7.23 und IE 6.0
In welchem Browser(n) geht das denn nicht?
Also, damit wir nicht von was anderem reden. du lädst eine Seite und nachdem die Seite ferig geladen wurde, weisst du dem Script Tag eine neue Quelle zu und dann kannst du ein in dieser Datei befindliches Skript ausführen?
Ich hab grad nur einen IE 4 zu Verfügung und der sagt sowas wie 'can't change property at runtime'
Ich werd das aber auf anderen Browsern nochmal probieren:
http://home.arcor.de/struebig/computer/javascript/test/test.html
Struppi.
Also...
hab das mal nachvollzogen. Mit Deiner Test.html bekomme ich auch einen Fehler (Allerdings: Objekt erwartet).
Wenn ich den Aufruf "a()" aus dem Script entferne, dann geht es
...
function load()
{
var lnk = "http://home.arcor.de/struebig/computer/javascript/test/test.js";
document.scripts("test").src=lnk;
//a();
}
...
<body onload="load();">
<a href="javascript:a();">test</a>
</body>
...
Die Messagebox, die dann kommt, ist jedoch leer.. aber das wohl ne andere Geschichte.
hab das mal nachvollzogen. Mit Deiner Test.html bekomme ich auch einen Fehler (Allerdings: Objekt erwartet).
Wenn ich den Aufruf "a()" aus dem Script entferne, dann geht es
logisch du weißt nicht, wann das Skript fertig geladen iste.
Mozilla sagt übrigens:
Error: document.scripts is not a function
Source File: http://home.arcor.de/struebig/computer/javascript/test/test.html
Line: 27
aber _linksetzer hat ja einen interessanten Artikel zum thema gebracht.
Struppi.
Hi,
<script type=text/javascript id="schkript"></script>
script gehört zu den wenigen Elementen, für die das id-Attribut NICHT definiert ist.
cu,
Andreas
hallo Michael,
Nur kann man doch keine name-Eigenschaft für Scripts verwenden, oder? Wie soll ich denn per Index rausfinden, welches Script ich gerade zu fassen habe?
Indem Du Dich einer anderen Syntax bedienst und mit den DOM-üblichen Methoden arbeitest:
<script type="text/javascript">
function dein_dyn_js()
{
t=document.getElementsByTagName("head")[0]
if(t.lastChild.src=="alt.js") t.removeChild(t.lastChild)
t.appendChild(document.createElement("script"))
t.lastChild.src="neu.js";
}
</script>
<script type="text/javascript" src='alt.js'></script>
Desweiteren steht Dir die Vergabe von IDs frei.
Gruß aus Berlin!
eddi
hi Xara,
jup - hab's über id gemacht. Hatte nicht auf Anhieb geklappt, weil ich Dödel statt id="" name="" angegeben hatte.. dachte schon das geht nicht. Funzt aber! :)
Jetzt müsste ich mich eigentlich nur entscheiden, welches die eleganteste Methode ist:
1. Die id-Methode
2. Die DOM-Methode
3. Die include()-Funktion Methode (Cybaer)
Hi,
Jetzt müsste ich mich eigentlich nur entscheiden, welches die eleganteste Methode ist:
- Die id-Methode
- Die DOM-Methode
- Die include()-Funktion Methode (Cybaer)
Ich weiß nicht, ob "meine" "elegant" ist. Aber sie funktionert als einzige der genannten in allen Browsern (so nicht ein böser Bug vor ist - NS 4.x hat da mitunter merkwürdige Anwandlungen beim Nachladen mehrerer externer Skripte - und der Resize-Bug wäre eben dort auch zu beachten) und mit allen JS-Versionen (OK, JS 1.0 bindet eh nichts externes ein).
Gruß, Cybaer
Hi,
kann man zur Laufzeit eine js-datei per javascript dynamisch einbinden?
Ja.
Als Alternative zur gewöhnlichen <script ... src="datei.js"> Methode.
Gab es nicht bei js auch so einen include-Befehl? *schongesuchthab*
Nein, aber eine include-Funktion ist schnell geschrieben:
function include(jsfile) {
document.write('<script ... src="'+jsfile+'"></script>');
}
;-)
Gruß, Cybaer
[...] Nein, aber eine include-Funktion ist schnell geschrieben: [...]
Jo, das hab ich auch ausprobiert.. aber da wurde mir dann plötzlich gar nichts mehr angezeigt!
Vielleicht liegt das daran, dass ich die include()-Funktion aus dem body-onload()-Ereignis heraus geladen habe? Schreibt er dann in den Body-Tag?!?
Hi,
Vielleicht liegt das daran, dass ich die include()-Funktion aus dem body-onload()-Ereignis heraus geladen habe?
Yep.
Schreibt er dann in den Body-Tag?!?
... und löscht dabei den alten Inhalt! Ist halt "zur Laufzeit" und nicht "nach Laufzeit". ;-)
Gruß, Cybaer