是一个兼容所有浏览器的 LocalStorage 包装器,不需要借助 Cookie 或者 Flash。 会根据浏览器自动选择使用 localStorage、globalStorage 或者 userData 来实现本地存储功能。
一 存储接口
通过 $.
调用。检测是否支持(开启) LocalStorage
var store = $.;
if (!) {
alert('Local storage is not supported by your browser. Please disable "Private Mode", or upgrade to a modern browser.');
return;
}
var user = ('user');
// ... and so on ...
Safari 的无痕浏览
模式或者用户禁用了本地存储时, 将返回
false
。
二 浏览器如何禁用 LocalStorage:
-
Firefox: 地址栏输入
about:config
, 将的值设置为
false
; -
Chrome:
设置
→隐私设置
→内容设置
→阻止网站设置任何数据
。
三 接口列表
LocalStorage 受同源策略限制,以下操作仅限于同源下的数据。
-
(key, val)
: 存储key
的值为val
; -
(key)
: 获取key
的值; -
(key)
: 移除key
的记录; -
()
: 清空存储; -
()
: 返回所有存储; -
()
: 遍历所有存储。
var store = $.;
// 存储 'username' 的值为 'marcus'
('username', 'marcus')
// 获取 'username'
('username')
// 移除 'username' 字段
('username')
// 清除所有本地存储
()
// 存储对象 - 自动调用
('user', { name: 'marcus', likes: 'javascript' })
// 获取存储的对象 - 自动执行
var user = ('user')
alert( + ' likes ' + )
// 从所有存储中获取值
(). == 'marcus'
// 遍历所有存储
(function(key, val) {
console.log(key, '==', val)
})
四 浏览器支持
绝大多数浏览器(包括 IE 8)都原生支持 LocalStorage。
你的浏览器测试结果为:
second pass bad assert: getAll gets all 4 values
不同浏览器对本地存储单条记录的长度限定不同,具体可以通过以下链接测试:
- Web Storage Support Test
- Test of localStorage limits/quota
五 注意事项
原生方法与 的差异
使用原生方法操作:
= 24
!== 24 // true
=== '24' // true
= { name: 'marcus', likes: 'javascript' }
=== "[object Object]" // true
= ['javascript', 'localStorage', '']
=== 32 // true
=== "javascript,localStorage," // true
使用 序列化后的结果:
('myage', 24)
('myage') === 24 // true
('user', { name: 'marcus', likes: 'javascript' })
alert("Hi my name is " + ('user').name + "!") // 仍然返回对象
('tags', ['javascript', 'localStorage', ''])
alert("We've got " + ('tags').length + " tags here") // 仍然返回数组