Homepage de.comp.lang.javascript
Homepage
de.comp.lang.javascript

FAQ de.comp.lang.javascript

FAQ
de.comp.lang.javascript

 

 

Bitte verwenden Sie als Einstiegsadresse in diese FAQ die Homepage der Newsgroup de.comp.lang.javascript. Der Aufenthaltsort dieser Seiten hier kann sich ohne Vorwarnung ändern.
 

 

HowTo: Sonstiges

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',
      '<iframe id="puffer" src="textDatei.txt" '
      +'style="width:0px;height:0px;">'
      +'</iframe>');
   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 ­

top
 

Diese Seite ist Teil der de.comp.lang.javascript FAQ. Die Einstiegsadresse lautet http://www.dcljs.de/.

 
© S. Mintert, Ch. Kühnel

 ______ letzte Änderung: 28.05.2011 ______