1

有了 HTML5 和本地存储,JavaScript 可以用来保存网页的状态吗?

例如,一些网站的increase font size按钮很可能是用 JS 控制的。如何保存属性,以便在刷新时大小保持不变?或者这是在没有 JS 的情况下完成的?

4

3 回答 3

3

您最好的选择可能是使用localStorage,除非您不希望设置在新会话中持续存在(sessionStorage在这种情况下您会使用)。如果您有多个设置,则可以存储设置的序列化表示。

例如

var settings = {
    fontSize: '11px',
    otherConfig: 'test'
};

localStorage.setItem('settings', JSON.stringify(settings));

//then you can retrieve it
settings = JSON.parse(localStorage.getItem('settings'));

console.log(settings.fontSize); //11px

请注意,如果您希望设置在用户从多台计算机连接时保持不变,则必须使用一些服务器端支持。

于 2013-11-02T22:48:26.937 回答
2

是的,它是用 Javascript 完成的。您可以使用

  • 饼干

  • 会话存储

    这是一个全局对象 ( sessionStorage),它维护一个在页面会话期间可用的存储区域。只要浏览器打开并在页面重新加载和恢复后仍然存在,页面会话就会持续。在新选项卡或窗口中打开页面将导致启动新会话。

  • 本地存储

    localStoragesessionStorage与应用同源规则相同,但它是持久的。

更好/更容易的是sessionStorageand localStorage。问题是旧浏览器不支持它们。

相反,处理 cookie 可能是一场噩梦,但它们也适用于旧浏览器。

于 2013-11-02T22:42:15.503 回答
1

Yes 可以将状态保存到 localStorage。

假设你有一个对象:

var settingsObj={

   pageClass:'bigFont',
   widgetSortOrder : [1,5,3,7]

}

您可以通过对对象进行字符串化,将整个对象保存到一个本地存储键中。当页面加载时,您会看到该键是否存在于 localStorage 中,并让您的 javascript 对这些设置执行任何操作

要字符串化和存储:

localStorage.setItem('mySettings', JSON.stringify(settingsObj) );

从存储中检索并转换为 js 对象

var settings=JSON.parse(localStorage.getItem('mySettings'));
于 2013-11-02T22:49:46.987 回答