von javascript geändertes dom speichern



  • Hi!

    Ich ändere per java-Script clientseitig das dom einer Webseite, d.h. der Benutzer kann so Inhalt zur Seite hinzufügen.
    Ich möchte, dass der User diese geänderte Seite irgendwie lokal speichern kann um sie das nächste mal im jeweiligen Zustand weiterzubearbeiten.

    Im Browser auf 'Seite speichern' speichert nur die ursprüngliche Seite.

    Hat jemand ne Idee?



  • Cookie ?



  • Ne, ich will das File speichern, weitergeben, auf einem anderen Rechner öffnen können.

    Tiddlywiki macht das auch so.



  • mittels AJAX dafür sorgen, dass auch der Server von den Änderungen des Users was mitbekommt



  • Ne, ich will das File speichern, weitergeben, auf einem anderen Rechner öffnen können.

    Das ist aber was ganz anderes als das:

    Ich möchte, dass der User diese geänderte Seite irgendwie lokal speichern kann...



  • > mittels AJAX dafür sorgen, dass auch der Server von den Änderungen des Users was mitbekommt

    Ich hab keinen Server.

    Ich erklärs besser nochmal 🙂
    Der Benutzer kann die Seite komplett ändern. Nicht nur irgendwelche mini-Informationen, die man in nem Cookie speichert. Stellt es Euch mehr wie ein Wiki vor. Javascript sorgt dafür, dass die Seite wirklich geändert wird.

    Diese GEÄNDERTE HTML-Seite soll lokal gespeichert werden können. Komplett in einem einzigen File. Mit dem File kann man dann alles machen, was man mit jedem html-File machen kann. Es im Anhang mailen, archivieren, es in einem anderen Browser auf einem anderen Rechner öffnen, es ausdrucken und ein papierschiffchen bauen etc.. Das ganze völlig ohne Server.

    Sowas gibts z.B. mit http://de.wikipedia.org/wiki/TiddlyWiki

    Jetzt zu meinem Problem: Das ändern der Seite etc. funzt, wie ich es brauche. Das 'einzige' was nicht funzt, ist das speichern. Wenn ich mit meinen Änderungen fertig bin und im Browser auf 'save as' klicke, wird die ursprüngliche, ungeänderte Seite gespeichert. D.h. das von javascript geänderte DOM geht verloren.

    Wie kann ich das speichern ermöglichen?



  • kartoffelsack schrieb:

    > mittels AJAX dafür sorgen, dass auch der Server von den Änderungen des Users was mitbekommt

    Ich hab keinen Server.

    und wo läuft dann deine Seite?



  • die Seite läuft nirgends. Man hat sie halt lokal auf dem Rechner liegen. Wie ein ganz normals dokument.
    Schaut Euch TiddlyWiki an!

    Aber Korrektur: bei TiddlyWiki funzt 'save as' im browser auch nicht. Man muss auf den 'saveChanges'-Link klicken, der ruft bei onclick ne javasript-Funktion saveChanges() auf, dann werd ich aber nicht weiter schlau draus ...



  • ok, das dom wird in tiddlywiki erstmal folgendermaßen in text umgewandelt:

    // Load contents of a TiddlyWiki from a string
    // Returns null if there's an error
    TiddlyWiki.prototype.importTiddlyWiki = function(text)
    {
    	var posDiv = locateStoreArea(text);
    	if(!posDiv)
    		return null;
    	var content = "<" + "html><" + "body>" + text.substring(posDiv[0],posDiv[1] + endSaveArea.length) + "<" + "/body><" + "/html>";
    	// Create the iframe
    	var iframe = document.createElement("iframe");
    	iframe.style.display = "none";
    	document.body.appendChild(iframe);
    	var doc = iframe.document;
    	if(iframe.contentDocument)
    		doc = iframe.contentDocument; // For NS6
    	else if(iframe.contentWindow)
    		doc = iframe.contentWindow.document; // For IE5.5 and IE6
    	// Put the content in the iframe
    	doc.open();
    	doc.writeln(content);
    	doc.close();
    	// Load the content into a TiddlyWiki() object
    	var storeArea = doc.getElementById("storeArea");
    	this.loadFromDiv(storeArea,"store");
    	// Get rid of the iframe
    	iframe.parentNode.removeChild(iframe);
    	return this;
    };
    


  • du kannst mit JS nicht lokal speichern und auch nicht von lokal laden .
    IMHO hat FF ein Plugin wo man den Source der veränderten seite sehen kann.
    Alles was Client betrifft hast du mit HTML + JS keine Möglichkeit.
    Lediglich mit activex, NET, JAVA gibts Möglichkeiten.

    Du kannst aber die Änderungen wieder zurück zum Server senden und ihm dann wieder liefern. Dann kann er es speichern



  • unixtom@work schrieb:

    Du kannst aber die Änderungen wieder zurück zum Server senden und ihm dann wieder liefern. Dann kann er es speichern

    kartoffelsack schrieb:

    Ich hab keinen Server.



  • > du kannst mit JS nicht lokal speichern und auch nicht von lokal laden

    Du KANNST mit js den quelltext der Seite ändern und auch die Browserfunktion zum speichern aufrufen. Der Browser warnt dich dann zwar, aber Du kannst es zulassen. Laden tust Du ganz normal über file/open.

    Wie oben beschrieben, war nicht die Frage, OB es geht (weil TiddlyWiki beweist, dass es geht), sondern nur WIE. Das ist aber (für mich) mit dem oben geposteten Code-Ausschnitt aus TiddlyWiki ausreichend gezeigt!


Anmelden zum Antworten