Параметры хранения Javascript/HTML в файловом протоколе (файл://)
Я разрабатываю html-приложение, которое по существу представляет собой серию страниц, таких как книга. Внутри этого приложения я хотел бы сохранить несколько переменных JavaScript на разных страницах. Подумайте о таких вещах, как чтение страниц, закладки и т.д. Когда это приложение просматривается через HTTP, я планирую использовать localStorage с резервными копиями для старых браузеров (globalStorage, userData и т.д.).
Однако это полностью разрушается, если к файлам обращаются через "файл://", например, если он отображается с компакт-диска. Похоже, что большинство (если не все) решений localStorage не будут работать в файловом протоколе. Куки файлы не являются опцией ни под "file://".
Любые идеи о том, как переносить данные JavaScript через html-страницы при просмотре через "файл://"?
Он действительно должен быть доступен только в текущем сеансе пользователя. Я действительно не хочу использовать фреймы, но на данный момент я не могу придумать другой способ выполнить этот
Ответы
Ответ 1
Приятель моей работы помог мне справиться с этой проблемой, разделив его реализацию использования window.name для хранения данных по страницам одного окна/сеанса.
Аналогичную реализацию (и обсуждение вокруг метода) можно найти здесь: http://ajaxian.com/archives/whats-in-a-windowname
Предварительные тесты, которые я делал по этому методу, выглядят очень многообещающими. Я протестировал это в соответствии с файловым протоколом (загрузка страницы с рабочего стола, a.k.a. - "файл: \" ) в следующих браузерах. Он работал над всеми из них!
- IE 6
- IE 7
- IE 8
- IE 9
- FF 3.6
- FF 4
- Chrome 11
- Opera 10
- Safari 4
Я еще не тестировал, сколько данных вы можете хранить здесь, но Интереты, похоже, соглашаются на значение 2 МБ.
Источники, ссылки, дополнительная информация
Ответ 2
В Webkit (Chromium 12.0.742.21 dev-m) localStorage по файловому протоколу отлично справился со мной.
В Gecko это сообщило и скоро должно быть улучшено.
Вы даже можете найти обходное решение, но я рекомендую вам разрабатывать с помощью ночной сборки Chrome. Таким образом, вы не потеряете время, возвращая его обратно в localStorage в будущем.