Datein beim Client schreiben
Zuenni
- javascript
Hi @ all
Ich beschäftige mich seit einigen Tagen mit Javascript (vorallem in kombination mit Greasemonkey)
Ich möchte jetzt gerne mit einem Script eine Menge von Daten abspeichern die ich aus einer Seite auslese. (Konkret: wenn ich mir bei Web.de eine empfangene Mail durchlese soll diese Mail automatisch auf meinem Pc gespeichert werden)
Ich weiß das soetwas ein Sicherheitsrisko darstellt, da aber vermutlich nur ich selber dieses Script nutzen werde und ich meinem firefox erlaubt habe das Javascript Dateien auf meinem PC schreiben darf ist das kein Problem.
Meine frage ist jetzt ganz einfach wie geht das? wie schreibe ich per Javascript neue Dateien?
PS: Diese Seite die man hier runterladen kann tut im prinzip was ich will^^ Leider bin ich noch nich Fortgeschritten genug um mir aus dem Script die passende stelle rauszusuchen...
http://www.tiddlywiki.com/
PS: Diese Seite die man hier runterladen kann tut im prinzip was ich will^^ Leider bin ich noch nich Fortgeschritten genug um mir aus dem Script die passende stelle rauszusuchen...
Das ist kein JavaScript - das ist ein simpler HTTP-Download.
PS: Diese Seite die man hier runterladen kann tut im prinzip was ich will^^ Leider bin ich noch nich Fortgeschritten genug um mir aus dem Script die passende stelle rauszusuchen...
Das ist kein JavaScript - das ist ein simpler HTTP-Download.
...
Lad dir die datei mal runter (wie gesagt is ne simple HTML datei)
doppel klick drauf und öfnen
Dan irgend was eiditiren und meinet wegen Hallo Wolrd eingeben
links auf save changes gehen
UND DANN schreibt diese HTML-datei sich selber um !
und wenn du sie dan schließt und wieder öfnest steht das Hallo World immer noch da
Achso, diese herunterladbare Datei macht das :) die merkt sich aber nix - ich bekomme den Warnhinweis, dass alles verloren geht, wenn ich die Seite verlasse (was auch passiert).
Achso, diese herunterladbare Datei macht das :) die merkt sich aber nix - ich bekomme den Warnhinweis, dass alles verloren geht, wenn ich die Seite verlasse (was auch passiert).
Rechts in der Navigation befindet sich der Knopf save changes wenn du den klickst speichert er das... bzw wenn dein Browser das nich erlaubt kommt vllt nen Wahrnhinweis oder so
wie schreibe ich per Javascript neue Dateien?
local file input/output in chrome JavaScript
Mathias
Das ist das was ich brauche^^
Leider habe ich keine ahnung wie ich das jetzt anwenden soll.
Ich wär super dankbar wenn mir einer nen javascript schreibt das ne datei mit dem inhalt "Hallo World" schreibt oder so ^^
wie schreibe ich per Javascript neue Dateien?
local file input/output in chrome JavaScript
Mathias
So das hab ich so weit geschaft...
Wenn ich die HTML-Seite von meiner Platte aus aufrufe kann sie auch dateien erstellen.
ABER wenn ich sie jetzt auf meinen Webspace lade und von dort aus aufrufe kann sie keine Datein mehr speichern anstadt dessen kommt in der Fehlerkonsole:
Einem Skirpt von "Webspace Adresse" wurden niversalXPConnect Berechtigung verweigert
JavaScript aus dem Netz hat kein Zugriff auf lokale Dateien. Lokales JavaScript hat nur Zugriff auf lokale Dateien, wenn du alle Sicherheitsbeschränkungen ausschaltest, was man möglichst vermeiden sollte.
Der Link, den ich dir gegeben habe, handelt von JavaScript mit Chrome-Rechten. Chrome ist die Umgebung, in der das Firefox-Interface läuft sowie Firefox-Addons. Welche Rechte ein Greasemonkey-Script hat, weiß ich nicht - ich vermute anhand deines Berichts, dass es ganz normal im Kontext eines Webdokuments läuft und damit dieselben eingeschränkten Rechte hat, wie ein fremdes Script auf irgendeiner Website. Aber vielleicht schaust du dir mal das an:
[≤ink:http://wiki.greasespot.net/FAQ#Can_Greasemonkey_be_used_to_open_local_files.3F]
http://wiki.greasespot.net/API_reference
Mathias
JavaScript aus dem Netz hat kein Zugriff auf lokale Dateien.
Gut, dan kann ich die Idee wohl begraben...
Also brauch ich jetzt ne Andere Möglichkeit wie ich die daten gespeichert bekomme. Meine nächste Idee wäre dass das Javascript die Daten irgendwie an meinen Wabspace schickt wo ich eine SQL Datenbank habe.
Mein problem ist jetzt das ich ja mit Greasemonkey Seiten nur verändere. Die Datenbank liegt also auf einem Anderen Server als die Seite von der aus ich die Daten speichern will.
Kann man irgendwie im Hintergrund von einem Javascript aus Daten an einen Server schicken?
Zünni
Kann man irgendwie im Hintergrund von einem Javascript aus Daten an einen Server schicken?
Du kannst den Browser auf eine URL weiterleiten (mt location.href) und GET-Parameter anhängen:
http://deinedomain.example.org/?a=1&b=2&c=3
Oder du kannst über das DOM ein POST-Formular erzeugen, Formularfelder einhängen und das Formular absenden - wodurch die Daten per POST an eine Adresse gesendet werden.
Mathias
Kann man irgendwie im Hintergrund von einem Javascript aus Daten an einen Server schicken?
Du kannst den Browser auf eine URL weiterleiten (mt location.href) und GET-Parameter anhängen:
http://deinedomain.example.org/?a=1&b=2&c=3Oder du kannst über das DOM ein POST-Formular erzeugen, Formularfelder einhängen und das Formular absenden - wodurch die Daten per POST an eine Adresse gesendet werden.
Mathias
Die Methoden sind mir beide geläufig, und ich würde die POST methode gerne nehmen den es sind sehr große datenmengen die ich speichern will.
Das problem ist das ich zum senden der Daten die seite nicht verlassen will.
Das problem ist das ich zum senden der Daten die seite nicht verlassen will.
Dann gibst du als target beim Formular einen unsichtbaren Iframe an, den du vorher erzeugt und ins Dokument eingehangen hast.
Mathias
Das problem ist das ich zum senden der Daten die seite nicht verlassen will.
Dann gibst du als target beim Formular einen unsichtbaren Iframe an, den du vorher erzeugt und ins Dokument eingehangen hast.
Mathias
So habs fast geschaft^^
Hab jetzt eine php seite über die ich die daten in eine Datenbank speichern kann, und auch wieder laden. Diese Seite lasse ich in einem verstecktem iframe anzeigen.
Mein letztes problem ist jetzt wenn ich die daten laden möchte, lasse ich mir ja im Iframe meine PHP datei anzeigen und möchte danach auf die elemente im iframe zugreifen. das erzeugen der seite auf dem server dauert aber natürlich ein paar msec ^^. Was bedeutet zu demzeitpunkt wo mein javascript versucht den inhalt des iframes auszulesen ist es noch garnicht fertig geladen.
Gibt es eine möglichkeit wie das javascript feststellen kann wann, oder ob der inhalt des iframe fertig geladen ist?
Zünni
Gibt es eine möglichkeit wie das javascript feststellen kann wann, oder ob der inhalt des iframe fertig geladen ist?
Über das load-Ereignis beim iframe-Element:
var iframe = document.createElement("iframe");
document.body.appendChild(iframe);
iframe.onload = function () {
alert("geladen!");
};
iframe.src = "http://example.org";
Zugriff auf das Dokument darin:
iframe.contentWindow für das window-Objekt
bzw.
iframe.contentDocument für das document-Objekt
Das Problem ist allerdings, dass dein JavaScript (höchstwahrscheinlich) nicht Cross-Domain-Zugriff hat. Ich weiß nicht, wie das bei GreaseMonkey-Scripten ist, aber prinzipiell gilt die Same-Origin-Policy. Dadurch hat ein Script keinen Zugriff auf die Inhalte des Iframes, wenn das Dokument im Iframe von einer anderen Domain stammt.
Mathias
Das Problem ist allerdings, dass dein JavaScript (höchstwahrscheinlich) nicht Cross-Domain-Zugriff hat. Ich weiß nicht, wie das bei GreaseMonkey-Scripten ist, aber prinzipiell gilt die Same-Origin-Policy. Dadurch hat ein Script keinen Zugriff auf die Inhalte des Iframes, wenn das Dokument im Iframe von einer anderen Domain stammt.
Staz mit X das war wohl nix :'(
naja, zunächst mal wieder was dazu gerlernt...
Ok ich bin für ideen offen wie ich von einer Seite aus auf einem fremnden Server oder Pc daten speichern und auch wieder laden kann ^^
Zünni
Das Problem ist allerdings, dass dein JavaScript (höchstwahrscheinlich) nicht Cross-Domain-Zugriff hat. Ich weiß nicht, wie das bei GreaseMonkey-Scripten ist, aber prinzipiell gilt die Same-Origin-Policy. Dadurch hat ein Script keinen Zugriff auf die Inhalte des Iframes, wenn das Dokument im Iframe von einer anderen Domain stammt.
Ich bin gerade beim Surfen darauf gestosen das Firefox 3.5 (welchen ich benutze) Cross-Site-XMLHttpRequest erlaubt.
Leider hab ich davon überhaupt gerkeine Ahnung (bis Gestern hatte ich das Wort noch nicht gehört); darum jetzt meine frage kann man das weiter helfen? Würde es sich lohnen wenn ich mich da einlese?
Zünni
Oder um die frage mal etwas allgemeiner zu formulieren:
Wie greife ich mit Javascript auf den Inhalt eines IFrames zu?
Hallo,
Wie greife ich mit Javascript auf den Inhalt eines IFrames zu?
Sven Rautenbergs Artikel Zugriff auf verschachtelte Fensterobjekte dürfte Dir helfen.
Freundliche Grüße
Vinzenz