sessionStorge和localStorage
会话存储(sessionStorage)和本地存储(localStorage)在实现方式上十分相似,而仅仅在作用域和数据持久化方面有所区别。浏览器为每种存储类型都提供了一种存储接口:sessionStorage
和localStorage
,它们都能使用键值对列表存储数据。你可以为一个键设置一个值,然后通过改建访问相应的值。两种存储对象都提供了用于设置值、获取值、删除键、获取键列表特定位置和清除所有键值对的方法。每种存储对象类型的方法和属性都是相同的。这是因为,它们都是从Web Storage规范定义的Storage接口继承而来。
setItem(key,value): 设置由参数定义的键值对。如果该键已经存在,那么对应值更新为参数中的值。
getItem(key): 获取参数中键对应的键值对
removeItem(key): 删除参数中对应的键值对
key(n): 返回索引对应的键名
clear: 删除所有的键值对
length: 提供存储列表中键值对的数量
PS:setItem中的value的类型为字符串,也就是说,如果你需要存储数字,必须在存储时将其视为字符串,然后在访问时将其转换回正确的数据格式。
使用示例如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>web storge</title>
</head>
<body>
<script>
function init() {
var divVisits = document.getElementById('divVisits');
if (window.sessionStorage) {
var visits;
if (sessionStorage.visits) {
visits = parseInt(sessionStorage.getItem('visits'));
visits++;
} else {
visits = 1;
}
sessionStorage.setItem('visits', visits);
divVisits.innerHTML = 'Session page visits: ' + visits;
} else {
divVisits = 'Window sessiongStorage is not avaiable';
}
}
window.addEventListener('load', init, false);
</script>
<div id="divVisits"></div>
</body>
</html>
捕获本地存储事件
事件可以是因为一个新键值对的插入、更新或者删除事件而触发。页面可以创建监听这些事件的相应函数,在接受到相应事件进行处理。storageEvent事件包含了帮助决定如何处理的属性。
属性 | 类型 | 目的 |
key | DOMString | 发生变化的键 |
oldValue | DOMString | 旧值 |
newValue | DOMString | 新值 |
url | DOMString | 发生变化的页面URL |
storageArea | Storage | 更新发生的存储区域 |