views:

57

answers:

2

I would like to have a html file with JavaScript, which (file) is able to modify its context. In more details, I imagine it like that. I have a html file, which I open with a browser. I have a text area there where I type my text and press submit button. As a result of that, the context of the form saved somewhere in the html file. What is the easiest and stable way to do that?

A: 

TiddlyWiki is a wiki in a single html file. But I can't tell you how they write/save the data. But you may want to look at their source code: http://www.tiddlywiki.com :-)

Philippe Gerber
+3  A: 

TiddlyWiki saves all its content to a new, local html-with-javascript file in browser-specific ways. This is because writing to the local hard drive is not normally allowed in javascript, for security reasons. If you're interested in specifically how TiddlyWiki writes the file, check the source code, starting with:

function saveFile(fileUrl,content)
{
    var r = mozillaSaveFile(fileUrl,content);
    if(!r)
        r = ieSaveFile(fileUrl,content);
    if(!r)
        r = javaSaveFile(fileUrl,content);
    return r;
}

This requires the user to explicitly override security warnings. When I tried it in Firefox, I had to do so several times. This is not good practice, as a user would be sorely tempted to check "Remember this decision" and potentially expose themselves to malware in the future.

As someone else said, a better idea is to use client-side storage such as the new features in HTML 5 (available in newer browsers), or a more portable library such as Google Gears; or perhaps better, YUI's StorageUtility, which abstracts to a higher level and uses either HTML 5, Google Gears, or SWF depending on what's available.

LarsH