Существуют разные способы сохранения состояния объекта, управляемого Javascript.Во-первых, хранить его в печенье.Очень просто поддерживается большинством браузеров:
$(function() {
var cookie = document.cookie,
state = cookie.substr(cookie.search('buttonCollapsed=')+16,1),
elem = $('div.collapsable');
if (state == 1) {
elem.hide();
}
elem.slideToogle(function() {
if ( elem.is(':visible') ) {
document.cookie = "buttonCollapsed=0";
} else {
document.cookie = "buttonCollapsed=1";
}
});
});
Вот хорошая Документация для файлов cookie в Javascipt .
В современных браузерах вы можете использовать локальное хранилище.Это часть спецификации Javascripts Webstorage и должна быть уже реализована в последних версиях браузера.Например, Firefox поддерживает его начиная с версии 3.5.В этом хранилище вы можете разместить сложные объекты со всеми необходимыми настройками.Вам нужно только сериализовать их в строку JSON.Это действительно просто:
var settings = {
buttonCollapsed: true,
lastPage: 5,
// ...
someNumbers: [1,4,6,9]
};
// Write object into storage
window.localStorage['mySettings'] = JSON.stringify(settings);
// Read object fron storage
settings = JSON.parse(window.localStorage['mySettings']);
if(settings.buttonCollapsed) {
$('div').hide();
}
Если вам не нужно поддерживать старый браузер с полной функциональностью, я бы использовал локальное хранилище.Если позже вы захотите хранить более сложные данные, вы можете использовать их повторно.Это может быть удобнее, если вы создадите некоторые функции доступа, такие как save($key, $value)
и load($key)
.Я начал плагин jQuery, который использует локальное хранилище , но в настоящее время он не готов к использованию.Может быть, вы черпаете вдохновение.
Если вы хотите поддержать сохранение состояния для новых браузеров и f *** o ** старых, вам следует проверить, доступно ли локальное хранилище:
if (typeof window.localStorage !== 'undefined') {
// ...
}
Надеюсь, это поможет ...