一 . jquery.cookie插件操作的cookie:
1.cookie? 網(wǎng)站,為了實現(xiàn)某些功能,把一些數(shù)據(jù)存儲到用戶的本地計算機。
1)存笛辟,種,寫(cookie 是同源的序苏,源頭是一個——同一個域名下):
$.cookie('cookename','cookievalue');
Expires/Max - Age:表示的就是cookie的過期時間:默認值—— Session(會話cookie —— 會話結(jié)束后(瀏覽器關(guān)閉)就消失);
$.cookie('cookie名字','cookie值',選項);
選項-》多個選項手幢,JSON格式
*設(shè)置過期時間:
使用jquery.cookie插件來設(shè)置cookie的時候,過期時間忱详,和現(xiàn)在的時間相差8小時围来。 expires:數(shù)字--天數(shù),時間對象--靈活設(shè)置;
例如:$.cookie('name',value,{
expires: 天數(shù)
});
*設(shè)置路徑:
如果cookie路徑path不一樣:父讀子讀不到 子讀父能讀到
通常踱阿,一個網(wǎng)站管钳,只用一套cookie
例如:$.cookie(name,value,{
expires:天數(shù),
path: '/'? ——// 通常情況下 設(shè)置為網(wǎng)站的根路徑
});
2)修改一個cookie的值:
和設(shè)置的方法一樣:$.cookie('name','新的value',{
path: //? 如果當前程序的path和cookie的path不一致,那么這里一定要指定path參數(shù)
});
3)刪除一個cookie:
把過期時間設(shè)置成負值
4)使用cookie的時候有幾點注意:
1.必須是服務(wù)環(huán)境
2.不安全 软舌, 因為它存在了用戶的本地機器上(臨時存儲)
3.過期時間:
默認:? session ——? 會話時間(會話結(jié)束才漆、瀏覽器關(guān)閉,cookie消失)
4.大小佛点、容量 醇滥,? 一般 4K? 左右,有的瀏覽器還有條數(shù)的限制
—— 珍貴的資源
5.不管看到的是什么超营,其值都是String類型(* 既然cookie里存的都是字符串鸳玩,那么在存的時候就明確的寫成字符串,避免系統(tǒng)做對應(yīng)的類型轉(zhuǎn)換)
例如:$.cookie('a',{a:1,b:1}); ——? 存的是? object Object? ×
$.cookie('a','{a:1,b:1}');? √
2.本地存儲
html5演闭,提供了一個新東西:localStorage(永久存儲) sessionStorage(會話)
容量:5M (如果存的內(nèi)存比較大不跟,占內(nèi)存比較嚴重,導(dǎo)致網(wǎng)頁變卡)
寫:
var storage=window.localStorage
storage.setItem('name','value');
storage.a='111';
storage[a]='aaa';
讀:
storage.getItem();
刪除:
全部刪除:storage.clear();
刪除一條:storage.removeItem('name');
循環(huán)所有的key:
storage.keys(i);
訪問所有的 localSorage 里的東西:
for(var i = 0; i< window.localStorage.length;i++){
alert(window.localStorage.key(i));
}
3.sessionStorage:用法和? localStorage? 的用法完全一致米碰。
4.cookie localStorage sessionStorage 同源(同一個域名) 在同一個域名下的數(shù)據(jù)可以互相訪問
5.localStorage的使用注意事項:
1窝革、突破了cookie大小限制,? 5M —— 本地數(shù)據(jù)庫
2吕座、html5支持這種寫法虐译,要求 ie8 以上的瀏覽器
3、取出來的永遠是字符串
4吴趴、存儲的內(nèi)容非常大的時候漆诽,占內(nèi)存嚴重,使網(wǎng)頁的訪問變慢
5、不能被爬蟲抓取
5.序列化(ES5):
把一個對象轉(zhuǎn)化成字符串厢拭,ES5提供的方法:JSON.stringify(字符串);
JSON.stringify({"a":1,"b":2}說)
6.反序列化(ES5):
把字符串變成對象
string.parse('{"a":1,"b":12}')
原生JS操作的cookie:
document.cookie 和 docum9ent.title(每次都覆蓋前一次的值) 類似
寫:
document.cookie='aaa';---只寫了value=aaa兰英,沒有name; ×
document.cookie='name=aaa'; √
設(shè)置path(根路徑):
document.cookie='textPath=abc;path=/';
設(shè)置expires(過期時間):
一天后過期:
var oDate=new Date();
oDate.setDate(oDate.getDate()+1);
document.cookie='textPath=abc;path=/;expires='+oDate;
一分鐘后過期:
var oDate=new Date();
oDate.setMinutes(oDate.getMinutes()+1)
document.cookie='textPath=abc;path=/;expires='+oDate;(相差八小時)
↓
document.cookie='textPath=abc;path=/;expires='+oDate.toUTCString();/oDate.toGMTString();
*封裝set:
function setCookie(name,value,iDay){
var str=name+'='+value+';path=/'
if(iDay){
var oDate=new Date();
oDate.setDate(oDate.getDate()+iDay);
str+=';expires='+oDate.toUTCString();
}
document.cookie=str;
}
setCookie('hello',111,2);
刪除cookie: setCookie('hello','',-2);
讀:
document.cookie---每個cookie之間是用“分號+空格”來分隔的
name=123; test=abc;
獲取一個cookie:
例如:
var arr=document.cookie.split('; ');
for(var i=0; i<arr.length; i++){
var arr2=arr[i].split('=');
if(arr2[0]==name){
alert(arr2[1])}
}