Datei lokal speichern mit JavaScript

Hallo,

ich hoffe, ihr könnt mir helfen.

Ich habe mir vorgenommen, JavaScript zu erlernen. Und da die Übung schließlich den Meister macht, dachte ich mir, ich schreibe mal ein Minitool. Für dieses Tool werden gewissen Daten benötigt (zu umfangreich für Cookies). Tool läuft lokal auf einem Rechner (braucht also wg. besonderer Rechte keine Signatur). Daten sind strukturiert (also z.B. id, text1, text2, audio1 etc). Vorerst zumindest unter aktuellem Firefox lauffähig.

Ich möchte, sozusagen als Fingerübung, aber auch um nicht wieder bei Java oder C++ zu landen (ich will ja JavaScript lernen) diese Daten über Browser mit JavaScript erfassen und in einer lokalen Datei speichern. Grundsätzlich ist das ja eher nicht erlaubt, aber wie gesagt, das komplette Tool läuft ja lokal.

Erster Ansatz: Ein Applet schreiben (kein JavaScript, aber Details bin ich auch bereit auszulagern), der diese Daten einliest und als Objekte an JavaScript zurückliefert. Ich schaffe es zwar, dieses Applet aufzurufen, aber sobald ich versuche, im Script anschließend auf die Methoden des zurückgegebenen Objekts zuzugreifen, bekomme ich die Fehlermeldung, daß dieses Objekt über keine solche Eigenschaften verfügt. Meiner Meinung nach erkennt JavaScript diese Objekte nicht als komplexe Objekte.

Zweiter Ansatz:

netscape.security.PrivilegeManager.enablePrivilege('UniversalFileRead')

somit sollte auch ein unsigniertes _lokales_ Script _lokale_ Dateien lesen dürfen. Es kommt auch entsprechende Aufforderung, dem Script mehr Rechte zuzuweisen. Leider kommt dann bei dem Versuch, auf eine Datei zuzugreifen zu einer Exception (ich fand leider noch nicht heraus, welchen). Der Zugriff sieht so aus:

 var br = new java.io.BufferedReader(new java.io.FileReader(fileName));

Ich habe sogar extra in der .java-policy alles (Lesen, Schreiben etc) in entsprechendem Verzeichnis erlaubt => keine Wirkung.

Laut der Information aus Internet sollten beide Methoden bei mir funktionieren. In Wirklichkeit tut es aber keine.

Weiß jemand, woran das liegen kann? Kennt jemand, wie das sonst noch bewerkstelligt werden kann? Alternativ auch unter IE?

Ich weiß, daß ich das mit anderen Programmier-/Scriptsprachen als nicht-Browser-Tool ruckzuck hinbekomme, aber es geht ja um die Übung (der Weg ist hier das Ziel).

Vielen Dank schon im Voraus,

Lida

Hallo,

Ich habe mir vorgenommen, JavaScript zu erlernen.

OK

Ich möchte, sozusagen als Fingerübung, aber auch um nicht
wieder bei Java oder C++ zu landen (ich will ja JavaScript
lernen) diese Daten über Browser mit JavaScript erfassen und
in einer lokalen Datei speichern. Grundsätzlich ist das ja
eher nicht erlaubt, aber wie gesagt, das komplette Tool läuft
ja lokal.

Das hört sich (für mich) etwas konfus an.

Was möchtes Du denn tatsächlich machen?

ist „lokal“ eine Date auf Deinem Filesystem
des Browsers oder auf deinem „lokalen Webserver“?
Und wozu soll das Kuddelmuddel aus Java, Applets
Javascript und HTML-Forms dienen?

Ich hab leider nicht allzuviel verstanden :wink:

Grüße

CMБ

Hallo Semjon,

wie ich schon sagte, geht es hier in erster Linie nicht um eine sinnvolle Anwendung an sich, sondern darum, die Sprache zu erlernen. Das Tool an sich sollte später nach Möglichkeit nur mit JavaScript realisiert werden (auch das ist nur eine Übung). Mir geht es hier im ersten Schritt nur darum, nicht gleich am Anfang der Lernkurve aus der Zielsprache auszusteigen. Ich befürchte, ich lande dann am Ende bei Java/Applet/C++ (was an sich nicht schlimm wäre, aber die Sprachen kann ich ja schon).

Kuddel-muddel aus JS, Java und Applets entstand nur dadurch, daß ich versucht habe, eine lokal auf dem Rechner eines Benutzers gespeicherte Datei aus einem lokal vom Rechner desselben Benutzers gestarteten JavaScript zu lesen / schreiben (es ist vorerst kein Server im Spiel). Und die einzigen zwei Möglichkeiten, die ich dazu fand, waren Priveleges von Netscape sowie Applet samt dazugehöriger Rechte in der .java-policy. Wie gesagt, leider funktioniert keine dieser Möglichkeiten bei mir. Ok, ich habe irgendwo gelesen, daß es auch mit irgendwelchem Packet für JS, das Flash einbindet/nachbildet geht, aber das ist halt wiederum eine andere Technologie bzw. das ist schon eine höhere Stufe der Abstraktion und ich möchte zunächst einmal von Pike auf lernen. Packete kommen später.

Hoffe, ich habe meine Intention diesmal besser rübergebracht,

Lida

Hallo Lida,

JavaScript ist einfach, erst recht wenn Du Dich schon mit Java-Syntax auskennst. Mit dem Mischmasch aus Applet und Script machst Du Dir das Leben nur schwerer, finde ich.

Mein Einstieg in JavaScript (Java konnte ich auch vorher schon), war erst einmal die Objektreferenz-Struktur gründlich zu Gemüte zu führen. Etwas theoretisch zwar, aber es führt kein Weg drum herum, und es ist auch nicht sonderlich schwer: http://de.selfhtml.org/javascript/objekte/index.htm . Man muss nicht alles lesen, sondern wenigstens den Objekte-Baum vor Augen haben können.

Eine lokal abgespeicherte Datei lesen geht mit IFrames.

Viele Grüße,

Mohamed.

Hallo Mohamed,

Mit dem Mischmasch aus Applet und
Script machst Du Dir das Leben nur schwerer, finde ich.

Das Gefühl hatte ich auch, das war ja auch der zweite Versuch einer Lösung (über Applet schreiben), nachdem der erste nicht funktioniert hat. Ich würde eine rein JavaScript Lösung preferieren.

http://de.selfhtml.org/javascript/objekte/index.htm

Danke für den Tipp, bin bisher gar nicht darauf gekommen.

Eine lokal abgespeicherte Datei lesen geht mit IFrames.

Naja, mir ging es um Schreiben, aber ich habe mittlerweile eine dritte Möglichkeit aufgetan und die funktioniert sogar bei mir. Zwar nur unter Firefox, aber es ist ja eh nur eine Fingerübung.

Viele Grüße,

Lida

Moin,

Mit dem Mischmasch aus Applet und
Script machst Du Dir das Leben nur schwerer, finde ich.

Das Gefühl hatte ich auch, das war ja auch der zweite Versuch
einer Lösung (über Applet schreiben), nachdem der erste nicht
funktioniert hat. Ich würde eine rein JavaScript Lösung
preferieren.

Frag Dich doch mal, zu welchem Zweck Du JavaScript überhaupt erlernen willst.

Mit konkreten Zielen ist es meist einfacher etwas zu erlernen, als wenn man gar nicht weiß, wozu man eine Sprache überhaupt braucht, und dann Dinge erzeugt, die völlig an der Realität vorbei sind.

Gruß,
-Efchen

Hallo Efchen,

wie ich es schon sagte, ich wollte mich nur mit der Sprache vertraut machen. Es ist mir sehr wohl bewußt, daß es in anderen Sprachen wesentlich schneller geht, mein Vorhaben in die Tat umzusetzen. Ich hasse es aber gleichzeitig, irgendwelche tumben helloWorld()-Sachen zu schreiben, mit denen man die Untiefen einer Sprache eh nicht erlernen kann. Und da ich ein Tool im Kopf hatte, hielt ich es für eine gute Idee, in JavaScript als Fingerübung und höchstens als Prototyp den ersten Entwurf zu erstellen. Das Tool ist nicht arg aufwendig aber auch nicht so primitiv, daß man dabei nur an der Oberfläche einer Sprache kratzt.

In diesem Fall trifft das Sprichwort „Der Weg ist das Ziel“ den Nagel auf den Kopf: Mir geht es nicht um ein funktionierendes Tool, sondern darum, eine Sprache mit dessen Hilfe zu erlernen. Daß ich dabei die Grenzen der Sprache auslote, ist sogar erwünscht.

Lida