js dynamisch nachladen
Markus
- javascript
Hallo,
bezugnehmend auf mein vorangehnendes Thema:
http://forum.de.selfhtml.org/?t=137235&m=891449
Es geht hier nur um das dynamische Nachladen was von globe in der ersten Antwort vorgeschlagen wurde. Das Problem ist, dass es nicht funktioniert. Ich habe inzwischen sogar eine weitere Möglichkeit gefunden aber selbst diese tut nicht:
var scriptElem = document.createElement('script');
scriptElem.type = 'text/javascript';
scriptElem.src = 'test.js';
var head = document.getElementsByName('head')[0];
if( head ) head.appendChild( scriptElem );
//----------------------------------------------------
var scriptElement = document.createElement( "script" );
scriptElement.setAttribute( "src", "test.js" );
document.body.appendChild( scriptElement );
In der test.js steht folgendes:
document.write("<br /><br /><br /><br /><br />test");
Wer hat eine Idee, warum ich beim Ausführen kein "test" finden kann?
Viele Grüße,
Markus Schutz
Falsch:
var head = document.getElementsByName('head')[0];
Richtig:
var head = document.getElementsByTagName('head')[0];
Das war der Fehler. Habs eben herausgefunden.
Eines vielleicht doch noch. Kann ich innerhalb einer .js Datei eine andere includieren?
Warum will ich das tun? Die zu includierende Datei wird in bestimmten Zeitintervallen vom Server geschrieben. Sie enthält nur eine Liste.
Geht das?
Hallo Markus,
Eines vielleicht doch noch. Kann ich innerhalb einer .js Datei eine andere includieren?
Nein leider nicht. Folgendes würde ich mal versuchen:
Im Kopf Deiner Datei wird ein Scriptelement eingehängen und dann auf das SRC-Attribut zugegriffen. Damit der Browser die Datei auch jedesmal neu lädt, hängst Du einen zufälligen Parameter an das Scriptfile.
scriptOb.src = "script.js?t="+Date.parse(new Date());
Mit freundlichem Gruß
Micha
Hallo,
Du wirfst da ein paar Dinge durcheinander.
Wenn du nach dem erfolgreichen Laden des Dokuments ein Script nachladen willst, so geht das über das Erzeugen eines script-Elements über die üblichen DOM-Methoden.
In dem nachgeladenen Script kannst du dann aber *nicht* document.write() verwenden. Das funktioniert nur während des Abarbeitens der direkt ins Dokument eingebetteten Scripte, ansonsten überschreibt document.write() das Dokument, anstatt Inhalte anzuhängen. Wenn du Änderungen am Dokument vornehmen willst, musst du das in dem Fall wie gewohnt über das DOM erledigen.
Wenn du während des Ladens des Dokuments ein Script einbinden willst, so geht das (wahrscheinlich nur) mit document.write("<script type='text/javascript' src='...'></script">");. In dem eingebundenen Script kannst du dann auch document.write() verwenden, die Ausgabe wird dann an die Stelle des ursprünglichen script-Elements im Markup gesetzt.
Mathias
Das mit document.write war lediglich ein Test und ist für das Ergebnis nicht relevant, da in Zukunft nur ein Array in den nachgeladenen Dateien aufgebaut wird.
Aber es geht inzwischen alles einwandfrei.