Самомодифицирующийся файл HTML-JavaScript

Я хотел бы иметь html-файл с JavaScript, который (файл) может изменять свой контекст. Более детально я себе это так представляю. У меня есть HTML-файл, который я открываю в браузере. У меня есть текстовая область, где я набираю текст и нажимаю кнопку отправки. В результате контекст формы сохраняется где-то в html-файле. Как это сделать проще и стабильнее?


person Roman    schedule 04.10.2010    source источник
comment
Если вы говорите о постоянном хранилище, для этого вам понадобится серверный язык или служба. Вы можете использовать любой?   -  person Pekka    schedule 04.10.2010
comment
Я хочу делать все на своем локальном компьютере. Я знаю, что это возможно без слов о подаче. В качестве рабочего примера могу упомянуть TiddlyWiki.   -  person Roman    schedule 04.10.2010
comment
Почему бы тебе тогда не взглянуть на это?   -  person Felix Kling    schedule 04.10.2010
comment
TiddlyWiki - это вики в одном файле HTML. Но я не могу вам сказать, как они записывают / сохраняют данные. Но вы можете посмотреть их исходный код: tiddlywiki.com :-)   -  person Philippe Gerber    schedule 04.10.2010
comment
TiddlyWiki работает с использованием Java в Safari, но изначально выполняет это в Firefox. Я не уверен, насколько широко поддерживаются эти функции. Другая возможность - это новое локальное хранилище HTML5, которое работает как база данных и может хранить (обычно) до 5 МБ на каждом сайте. Обратной стороной, конечно же, является то, что если вы откроете сайт в одном браузере, контент в другом браузере не будет обновляться.   -  person Georg Schölly    schedule 04.10.2010
comment
Если вы скачаете TiddlyWiki, вы увидите, что на самом деле он поставляется с двумя файлами - JAR - это то, что сохраняет.   -  person Chuck    schedule 04.10.2010


Ответы (1)


TiddlyWiki сохраняет все свое содержимое в новый локальный файл html-with-javascript специфичными для браузера способами. Это связано с тем, что запись на локальный жесткий диск обычно не разрешена в javascript по соображениям безопасности. Если вас интересует, как именно TiddlyWiki записывает файл, проверьте исходный код, начиная с :

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

Это требует, чтобы пользователь явно переопределил предупреждения системы безопасности. Когда я пробовал это в Firefox, мне приходилось делать это несколько раз. Это не очень хорошая практика, так как у пользователя возникнет сильное искушение поставить галочку «Запомните это решение» и потенциально подвергнуть себя вредоносному ПО в будущем.

Как сказал кто-то другой, лучше использовать хранилище на стороне клиента, такое как новые функции в HTML 5 (доступные в новых браузерах), или более портативную библиотеку, такую ​​как Google Gears; или, возможно, лучше, YUI StorageUtility, которая абстрагируется на более высокий уровень и использует либо HTML 5 , Google Gears или SWF в зависимости от того, что доступно.

person LarsH    schedule 04.10.2010
comment
Обратите внимание, что обсуждение переносимости параметров хранилища на стороне клиента устарело. - person LarsH; 11.05.2013