JavaScript高级程序设计笔记(17)-离线应用与客户端存储

数据存储

构成:

  • 名称:一个唯一确定cookie的名称,cookie的名称必须是经过URL编码的。
  • 值:储存在cookie中的字符串值,值必须被URL编码。
  • 域:cookie对哪个域是有效的,所有向该域发送的请求中都包含这个cookie信息。
  • 路径:对于指定域中的那个路径,应该向服务器发送cookie。
  • 失效时间:表示cookie何时应该被删除的时间戳。
  • 安全标志 cookie的读取、写入和删除。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
var CookieUtil = {
get: function(name){
var cookieName = encodeURIComponent(name) + '=',
cookieStart = document.cookie.indexOf(cookieName),
cookieValue = null;
if(cookieStart > -1){
var cookieEnd = document.cookie.indexOf(';', cookieStart);
if(cookieEnd == -1){
cookieEnd = document.cookie.length;
}
cookieValue = decodeURIComponent(document.cookie.substring(cookieStart + cookieName.length, cookieEnd));
}
return cookieValue;
},
set: function(name, value, expires, path, domain, secure){
var cookieText = encodeURIComponent(name) + '=' + encodeURIComponent(value);
if(expires instanceof Date){
cookieText += '; expires=' + expires.toGMTString();
}
if(path){
cookieText +='; path=' + path;
}
if(domain){
cookieText +='; domain=' + domain;
}
if(secure){
cookieText +='; secure';
}
document.cookie = cookieText;
},
unset: function(name, path, domain, secure){
this.set(name,'',new Date(0), path, domain, secure);
}
}

Web存储机制

1、 Storage提供如下方法:

  • clear(): 删除所有值
  • getItem(name): 根据指定名字name获取对应的值
  • key(index): 或得index位置处的名字
  • removeItem(name): 删除指定的name的键值对
  • setItem(name, value): 为指定的name设置一个对应的值

sessionStorage 对象

localStorage

indexedDB

1
2
3
4
5
6
7
8
var request, database;
request = indexedDB.open('admin');
request.onerror = function(event){
console.log(event.target.errorCode);
}
request.onsuccess = function(event){
database = event.target.result;
}