成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

cookie和localStorage那些事

Jeffrrey / 3353人閱讀

摘要:它的大小限制為左右,是網(wǎng)景公司的前雇員在年月的發(fā)明。字符串轉(zhuǎn)義通過(guò)來(lái)設(shè)置的有效期。和的用法和屬性允許在瀏覽器中存儲(chǔ)對(duì)的數(shù)據(jù)。用于臨時(shí)保存同一窗口或標(biāo)簽頁(yè)的數(shù)據(jù),在關(guān)閉窗口或標(biāo)簽頁(yè)之后將會(huì)刪除這些數(shù)據(jù)。是瀏覽器關(guān)閉后就立即清除。

一、localStorage、cookie、sessionStorage的區(qū)別與練習(xí)

1、cookie 小甜餅。它的大小限制為4KB左右,是網(wǎng)景公司的前雇員 Lou Montulli 在1993年3月的發(fā)明。它的主要用途有保存登錄信息,比如你登錄某個(gè)網(wǎng)站市場(chǎng)可以看到“記住密碼”,這通常就是通過(guò)在Cookie中存入一段辨別用戶(hù)身份的數(shù)據(jù)來(lái)實(shí)現(xiàn)的。
a、生命周期:通常為關(guān)閉瀏覽器的時(shí)間。如果想在關(guān)閉后還可以打開(kāi),可以給cookie設(shè)置失效時(shí)間

//具體操作cookie 
document.cookie = "name=value;expires=date;path=path;domain=domain; secure"http://path路徑;domain同域名訪(fǎng)問(wèn);**secure**只將http轉(zhuǎn)為https加密傳輸(僅是服務(wù)器與客戶(hù)端之間)
 document.cookie  = "username=Darren"http://"username"表示 cookie 名稱(chēng),"Darren"表示這個(gè)名稱(chēng)對(duì)應(yīng)的值。假設(shè) cookie 名稱(chēng)并不存在,那么就是創(chuàng)建一個(gè)新的 cookie;如果存在就是修改了這個(gè) cookie 名稱(chēng)對(duì)應(yīng)的值。
//cookie的存取 存取時(shí)必須要使用Document對(duì)象的 cookie 屬性;(from w3cschool)
function getCookie(c_name){
    if (document.cookie.length>0){  //先判斷cookie是否為空,為空就return ""
        c_start=document.cookie.indexOf(c_name + "=")  //通過(guò)String對(duì)象的indexOf()來(lái)檢查這個(gè)cookie是否存在,不存在就為 -1  
        if (c_start!=-1){ 
           c_start=c_start + c_name.length+1  //最后這個(gè)+1其實(shí)是表示"="號(hào)啦,這樣就獲取到了cookie值的開(kāi)始位置
           c_end=document.cookie.indexOf(";",c_start)//indexOf()第二個(gè)參數(shù)表示指定的開(kāi)始索引的位置...為了得到值的結(jié)束位置。因?yàn)樾枰紤]是否是最后一項(xiàng),所以通過(guò)";"號(hào)是否存在來(lái)判斷
            if (c_end==-1) 
            c_end=document.cookie.length;  
            return unescape(document.cookie.substring(c_start,c_end))//通過(guò)substring()得到了值。想了解unescape()得先知道escape()是做什么的,都是很重要的基礎(chǔ),想了解的可以搜索下,在文章結(jié)尾處也會(huì)進(jìn)行講解cookie編碼細(xì)節(jié)
            //substring(indexStart[, indexEnd])截取一個(gè)字符串在開(kāi)始索引到結(jié)束索引之間的一個(gè)子集, 或從開(kāi)始索引直到字符串的末尾的一個(gè)子集。indexStart[, indexEnd]
           //escape()字符串轉(zhuǎn)義
} 
    }
return ""
}  
//通過(guò)expires來(lái)設(shè)置 cookie 的有效期。語(yǔ)法如下:
 document.cookie = "name=value;expires=date"http://data:GMT(格林威治時(shí)間)格式的日期型字符串
 var _date = new Date();
 _date.setDate(_date.getDate()+30);//30 是保存30天的意思
 _date.toGMTString();
 //函數(shù)封裝
  function setCookie(c_name, value, expiredays){
  var exdate=new Date();
  exdate.setDate(exdate.getDate() + expiredays);
  document.cookie=c_name+ "=" + escape(value) + ((expiredays==null) ? "" :";expires="+exdate.toGMTString());
  }
  //使用方法
  setCookie("username","changlin",30)  
  
  

在輸入cookie信息時(shí)不能包含空格,分號(hào),逗號(hào)等特殊符號(hào),而在一般情況下,cookie 信息的存儲(chǔ)都是采用未編碼的方式。所以,在設(shè)置 cookie 信息以前要先使用escape()函數(shù)將 cookie 值信息進(jìn)行編碼,在獲取到 cookie 值得時(shí)候再使用unescape()函數(shù)把值進(jìn)行轉(zhuǎn)換回來(lái)。如設(shè)置cookie時(shí):

  document.cookie = name + "="+ escape (value)

  再看看基礎(chǔ)用法時(shí)提到過(guò)的getCookie()內(nèi)的一句:
  

return unescape(document.cookie.substring(c_start,c_end))

  這樣就不用擔(dān)心因?yàn)樵赾ookie值中出現(xiàn)了特殊符號(hào)而導(dǎo)致 cookie 信息出錯(cuò)了。
2、sessionStorage 和localStorage的用法
localStorage 和 sessionStorage 屬性允許在瀏覽器中存儲(chǔ) key/value 對(duì)的數(shù)據(jù)。
sessionStorage 用于臨時(shí)保存同一窗口(或標(biāo)簽頁(yè))的數(shù)據(jù),在關(guān)閉窗口或標(biāo)簽頁(yè)之后將會(huì)刪除這些數(shù)據(jù)。
location是一直存在本地。sessionStorage是瀏覽器關(guān)閉后就立即清除。
localStorage局限性:
1、瀏覽器的大小不統(tǒng)一,并且在IE8以上的IE版本才支持localStorage這個(gè)屬性
2、目前所有的瀏覽器中都會(huì)把localStorage的值類(lèi)型限定為string類(lèi)型,這個(gè)在對(duì)我們?nèi)粘1容^常見(jiàn)的JSON對(duì)象類(lèi)型需要一些轉(zhuǎn)換
3、localStorage在瀏覽器的隱私模式下面是不可讀取的
4、localStorage本質(zhì)上是對(duì)字符串的讀取,如果存儲(chǔ)內(nèi)容多的話(huà)會(huì)消耗內(nèi)存空間,會(huì)導(dǎo)致頁(yè)面變卡
5、localStorage不能被爬蟲(chóng)抓取到
6、相比于cookie可以節(jié)約帶寬,但是這個(gè)卻是只有在高版本的瀏覽器中才支持的

//用法
var  students = {
    xiaomin: {
    name: "xiaoming",
    grade: 1
    },
teemo: {
    name: "teemo",
    grade: 3
  }
}
students = JSON.stringify(students); //將JSON轉(zhuǎn)為字符串存到變量里
console.log(students);
localStorage.setItem("students",students);//將變量存到localStorage里
var newStudents = localStorage.getItem("students");
newStudents = JSON.parse(students); //轉(zhuǎn)為JSON
console.log(newStudents); // 打印出原先對(duì)象    

常用API

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/109990.html

相關(guān)文章

  • 關(guān)于Cookie那些

    摘要:假設(shè)有兩個(gè)域名域名域名域名有分級(jí)的概念,也就是說(shuō)域名與域名都是的子域名,又是的子域名在域名所使用的服務(wù)中,可以設(shè)置域名在服務(wù)端設(shè)置的時(shí)候,設(shè)置為或沒(méi)有區(qū)別,注意前面的點(diǎn),即只要是為顯式的聲明,前面帶不帶點(diǎn)沒(méi)有區(qū)別。 1 Cookie簡(jiǎn)介 Cookie是由W3C組織提出,最早由NetScape社區(qū)發(fā)展的一種機(jī)制。Cookie是存儲(chǔ)于訪(fǎng)問(wèn)者的計(jì)算機(jī)中的變量。每當(dāng)同一臺(tái)計(jì)算機(jī)通過(guò)瀏覽器請(qǐng)求某...

    sf_wangchong 評(píng)論0 收藏0
  • 關(guān)于Cookie那些

    摘要:假設(shè)有兩個(gè)域名域名域名域名有分級(jí)的概念,也就是說(shuō)域名與域名都是的子域名,又是的子域名在域名所使用的服務(wù)中,可以設(shè)置域名在服務(wù)端設(shè)置的時(shí)候,設(shè)置為或沒(méi)有區(qū)別,注意前面的點(diǎn),即只要是為顯式的聲明,前面帶不帶點(diǎn)沒(méi)有區(qū)別。 1 Cookie簡(jiǎn)介 Cookie是由W3C組織提出,最早由NetScape社區(qū)發(fā)展的一種機(jī)制。Cookie是存儲(chǔ)于訪(fǎng)問(wèn)者的計(jì)算機(jī)中的變量。每當(dāng)同一臺(tái)計(jì)算機(jī)通過(guò)瀏覽器請(qǐng)求某...

    alogy 評(píng)論0 收藏0
  • [聊一聊系列]聊一聊前端存儲(chǔ)那些

    摘要:如圖圖顧名思義,,是級(jí)別的存儲(chǔ)。如筆者寫(xiě)的一篇淺析文章聊一聊百度移動(dòng)端首頁(yè)前端速度那些事兒讀者們可以嘗試使用。 歡迎大家收看聊一聊系列,這一套系列文章,可以幫助前端工程師們了解前端的方方面面(不僅僅是代碼):https://segmentfault.com/blog/frontenddriver 在web開(kāi)發(fā)越來(lái)越復(fù)雜的今天,前端擁有的能力也越來(lái)越多。其中最重要的一項(xiàng)莫過(guò)于web存儲(chǔ)。...

    caige 評(píng)論0 收藏0
  • 瀏覽器本地存儲(chǔ)

    摘要:瀏覽器本地存儲(chǔ)在較高版本的瀏覽器中,提供了和。單個(gè)保存的數(shù)據(jù)不能超過(guò),很多瀏覽器都限制一個(gè)站點(diǎn)最多保存?zhèn)€。 瀏覽器本地存儲(chǔ) 在較高版本的瀏覽器中,js提供了sessionStorage和globalStorage。在HTML5中提供了localStorage來(lái)取代globalStorage html5中的Web Storage包括了兩種存儲(chǔ)方式:sessionStorage和loca...

    oysun 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<