Die Frage nun:
Wie lese ich eine externe Text-Datei (txt oder html oder egal)
ein und speichere den Wert in einer Variablen?
Hallo Daniel,
ich kopiere dir mal einen Artikel von Wolfang Schwarz hier hin. Soviel vorneweg: Wenn du auf Umweglösungen verzichten willst, dann scheue dir z.B. mal PHP oder Perl an. Dort ist das eine einfache Übung.
MfG
Albrecht
Kann ich mit JavaScript eine Textdatei vom Server einlesen?
Eigentlich ist so etwas für JavaScript nicht vorgesehen. Mit ein wenig Trickserei geht es aber bei den „großen“ Browsern trotzdem, wenn auch ziemlich unterschiedlich.
Netscape 4 zum Beispiel kann über LiveConnect Java-Methoden benutzen und darüber serverseitige Dateien jeder Art einlesen (natürlich nur wenn Java aktiviert ist). Das sieht dann ungefähr so aus:
if (self.netscape) { // Browser ist Netscape und Java ist aktiviert
text=’’;
var strom = java.net.URL(‚textDatei.txt‘).openStream();
var vorleser = new java.io.InputStreamReader(strom);
var leser = new java.io.BufferedReader(vorleser);
while(((zeile=leser.readLine()))!=null) text+=zeile+’\n’;
reader.close();
alert(text);
}
Für Internet Explorer 4 kann man stattdessen einen versteckten Iframe benutzen. Die Datei wird in den Iframe geladen und dessen Inhalt anschließend ausgelesen. So zum Beispiel:
document.body.insertAdjacentHTML(‚beforeEnd‘,
‚‘
+’’);
setTimeout(„warten()“, 200);
function warten() {
if (puffer.document && puffer.document.body
&& puffer.document.readyState==‚complete‘) {
text = puffer.document.body.innerText;
alert(text);
}
else setTimeout(‚warten()‘, 200);
}
Die Windows-Version von Internet Explorer 5 bringt ein DHTML Behavior mit, das die Sache noch einfacher macht. Man muss lediglich irgend einem Element das Behavior zuweisen, zum Beispiel dem body:
document.body.style.behavior=„url(#default#download)“;
Dann hat dieses Element automatisch die Methode startDownload, der ein Dateiname und eine Funktionsreferenz übergeben wird. Die Datei wird dann eingelesen und der Funktion als String übergeben:
document.body.startDownload(‚textDatei.txt‘, liesvor);
function liesvor(text) {
alert(text);
}
Mit der Mac-Version des IE5 geht das nicht. Für den muss man auf die Iframe-Lösung von oben zurückgreifen.
Wolfgang Schwarz