html - 为 HTML5 本地存储项目指定默认值?

标签 html local-storage

如果您尝试获取不存在的本地存储项目,是否可以为该项目设置默认值?

例如,假设在您的网络应用中,各种 UI 首选项保存在本地存储中。当用户离开您的网站然后返回时,UI 会根据从其本地存储中提取的值进行设置。这很好用。

但是,当用户第一次访问您的网络应用时,这些本地存储值尚不存在。因此,当您的 JavaScript 尝试获取那些本地存储项时,它们都将是未定义的。有没有办法在每个本地存储项目不存在的情况下为其指定默认值?

大多数处理保存键/值对的编程语言都提供某种方式来指定默认值(想想 .ini 配置文件接口(interface))。我期待这样的事情:

var preference = localStorage.getItem('some-key', 'Default Value');

此外,我知道我可以通过测试默认值是否为空/未定义并相应地设置值来轻松地以编程方式设置默认值,但我想看看这是否内置于本地存储键/值对获取和也许我只是没有看到它。如果此功能不存在,我最终只会编写一些添加此功能的基本本地存储包装器函数。

最佳答案

不,没有这样的内置功能。请参阅 Storage interface 的规范:

interface Storage {
  readonly attribute unsigned long length;
  DOMString? key(unsigned long index);
  getter DOMString getItem(DOMString key);
  setter creator void setItem(DOMString key, DOMString value);
  deleter void removeItem(DOMString key);
  void clear();
};

下面一行只是为了进一步确认:

The getItem(key) method must return the current value associated with the given key. If the given key does not exist in the list associated with the object then this method must return null.

您可以使用通常的技术。这样的事情应该没问题:

var preference = localStorage.getItem('some-key') || 'Default Value';

关于html - 为 HTML5 本地存储项目指定默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13791569/

相关文章:

java - JSP 页面的 Tomcat 500 错误 - 唯一的 JSP 内容是 if/else

html - 垂直居中对齐文本 - 在所有 IE 中

javascript - 如何在 marquee 标签中设置小于 1 的滚动值?

javascript - Safari:编辑并保存本地存储值

ruby - 将 JS 变量注入(inject) haml 模板

javascript - 未捕获的 DOMException : An attempt was made to use an object that is not, 或在访问可用变量时不再可用

java - java中有什么方法可以判断一个字符串是否包含HTML标签

javascript - 从数组自动填写 HTML 表单

html - 是否可以使用 localStorage 进行客户端页面/DOM 缓存?

javascript - 使用 jQuery 一键切换类并保存最后状态