
К счастью, есть решение, которое позволяет хранить данные JavaScript в браузере. Данные сохраняются между загрузками страниц, они сохраняются на странице назад / следующих событиях (даже вне домена), им не требуются плагины или автономные хранилища, они будут хранить несколько мегабайт информации, это никогда не происходит передается на сервер и работает в любом браузере. Как ни странно, он работает, используя свойство window.name (или window.top.name, если вы используете несколько фреймов).
Разработчики редко устанавливают свойство window.name. Как правило, это требуется только при работе с фреймами или всплывающими окнами. Даже если бы я надеялся, что вы этого не делаете, вам обычно не нужно определять имя для стартового окна приложения. Хотя свойство name все еще является строкой, оно может содержать несколько мегабайт данных. Некоторые версии Opera ограничивают его до 2 МБ, но большинство браузеров предлагают 10 МБ или более.
Это легко попробовать для себя. Вставьте следующий код JavaScript на страницу вашего сайта:
window.name = "This message will survive between page loads.";
Теперь добавьте следующий код на любую другую страницу:
alert(window.name);
Перейдите с первой страницы на вторую, и вы увидите, что данные сообщения сохранены.
Как обычно, есть ряд предостережений:
- Свойство window.name может быть проанализировано и изменено, если вы перейдете на страницу на другом веб-сайте. Это легко предотвратить, если не предоставить внешние ссылки в главном окне вашего приложения. Однако, чтобы быть в безопасности, не используйте window.name для хранения защищенных данных (вряд ли это будет серьезной проблемой для временного хранилища данных только на стороне клиента).
- window.name может хранить только строки. Что если нам нужно сохранить другие типы данных или даже сложные объекты? Ответом является сериализация, и, к счастью, мы уже разработали кросс-браузерный код для генерации строк JSON из любого объекта JavaScript .
См. Также: Как написать библиотеку сессий без файлов cookie для JavaScript .