摘要:它的大小限制為左右,是網(wǎng)景公司的前雇員在年月的發(fā)明。字符串轉(zhuǎn)義通過來設(shè)置的有效期。和的用法和屬性允許在瀏覽器中存儲對的數(shù)據(jù)。用于臨時保存同一窗口或標(biāo)簽頁的數(shù)據(jù),在關(guān)閉窗口或標(biāo)簽頁之后將會刪除這些數(shù)據(jù)。是瀏覽器關(guān)閉后就立即清除。
一、localStorage、cookie、sessionStorage的區(qū)別與練習(xí)
1、cookie 小甜餅。它的大小限制為4KB左右,是網(wǎng)景公司的前雇員 Lou Montulli 在1993年3月的發(fā)明。它的主要用途有保存登錄信息,比如你登錄某個網(wǎng)站市場可以看到“記住密碼”,這通常就是通過在Cookie中存入一段辨別用戶身份的數(shù)據(jù)來實現(xiàn)的。
a、生命周期:通常為關(guān)閉瀏覽器的時間。如果想在關(guān)閉后還可以打開,可以給cookie設(shè)置失效時間
//具體操作cookie document.cookie = "name=value;expires=date;path=path;domain=domain; secure"http://path路徑;domain同域名訪問;**secure**只將http轉(zhuǎn)為https加密傳輸(僅是服務(wù)器與客戶端之間) document.cookie = "username=Darren"http://"username"表示 cookie 名稱,"Darren"表示這個名稱對應(yīng)的值。假設(shè) cookie 名稱并不存在,那么就是創(chuàng)建一個新的 cookie;如果存在就是修改了這個 cookie 名稱對應(yīng)的值。 //cookie的存取 存取時必須要使用Document對象的 cookie 屬性;(from w3cschool) function getCookie(c_name){ if (document.cookie.length>0){ //先判斷cookie是否為空,為空就return "" c_start=document.cookie.indexOf(c_name + "=") //通過String對象的indexOf()來檢查這個cookie是否存在,不存在就為 -1 if (c_start!=-1){ c_start=c_start + c_name.length+1 //最后這個+1其實是表示"="號啦,這樣就獲取到了cookie值的開始位置 c_end=document.cookie.indexOf(";",c_start)//indexOf()第二個參數(shù)表示指定的開始索引的位置...為了得到值的結(jié)束位置。因為需要考慮是否是最后一項,所以通過";"號是否存在來判斷 if (c_end==-1) c_end=document.cookie.length; return unescape(document.cookie.substring(c_start,c_end))//通過substring()得到了值。想了解unescape()得先知道escape()是做什么的,都是很重要的基礎(chǔ),想了解的可以搜索下,在文章結(jié)尾處也會進(jìn)行講解cookie編碼細(xì)節(jié) //substring(indexStart[, indexEnd])截取一個字符串在開始索引到結(jié)束索引之間的一個子集, 或從開始索引直到字符串的末尾的一個子集。indexStart[, indexEnd] //escape()字符串轉(zhuǎn)義 } } return "" } //通過expires來設(shè)置 cookie 的有效期。語法如下: document.cookie = "name=value;expires=date"http://data:GMT(格林威治時間)格式的日期型字符串 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信息時不能包含空格,分號,逗號等特殊符號,而在一般情況下,cookie 信息的存儲都是采用未編碼的方式。所以,在設(shè)置 cookie 信息以前要先使用escape()函數(shù)將 cookie 值信息進(jìn)行編碼,在獲取到 cookie 值得時候再使用unescape()函數(shù)把值進(jìn)行轉(zhuǎn)換回來。如設(shè)置cookie時:
document.cookie = name + "="+ escape (value)
再看看基礎(chǔ)用法時提到過的getCookie()內(nèi)的一句:
return unescape(document.cookie.substring(c_start,c_end))
這樣就不用擔(dān)心因為在cookie值中出現(xiàn)了特殊符號而導(dǎo)致 cookie 信息出錯了。
2、sessionStorage 和localStorage的用法
localStorage 和 sessionStorage 屬性允許在瀏覽器中存儲 key/value 對的數(shù)據(jù)。
sessionStorage 用于臨時保存同一窗口(或標(biāo)簽頁)的數(shù)據(jù),在關(guān)閉窗口或標(biāo)簽頁之后將會刪除這些數(shù)據(jù)。
location是一直存在本地。sessionStorage是瀏覽器關(guān)閉后就立即清除。
localStorage局限性:
1、瀏覽器的大小不統(tǒng)一,并且在IE8以上的IE版本才支持localStorage這個屬性
2、目前所有的瀏覽器中都會把localStorage的值類型限定為string類型,這個在對我們?nèi)粘1容^常見的JSON對象類型需要一些轉(zhuǎn)換
3、localStorage在瀏覽器的隱私模式下面是不可讀取的
4、localStorage本質(zhì)上是對字符串的讀取,如果存儲內(nèi)容多的話會消耗內(nèi)存空間,會導(dǎo)致頁面變卡
5、localStorage不能被爬蟲抓取到
6、相比于cookie可以節(jié)約帶寬,但是這個卻是只有在高版本的瀏覽器中才支持的
//用法 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); // 打印出原先對象
常用API
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/109990.html
摘要:假設(shè)有兩個域名域名域名域名有分級的概念,也就是說域名與域名都是的子域名,又是的子域名在域名所使用的服務(wù)中,可以設(shè)置域名在服務(wù)端設(shè)置的時候,設(shè)置為或沒有區(qū)別,注意前面的點,即只要是為顯式的聲明,前面帶不帶點沒有區(qū)別。 1 Cookie簡介 Cookie是由W3C組織提出,最早由NetScape社區(qū)發(fā)展的一種機制。Cookie是存儲于訪問者的計算機中的變量。每當(dāng)同一臺計算機通過瀏覽器請求某...
摘要:假設(shè)有兩個域名域名域名域名有分級的概念,也就是說域名與域名都是的子域名,又是的子域名在域名所使用的服務(wù)中,可以設(shè)置域名在服務(wù)端設(shè)置的時候,設(shè)置為或沒有區(qū)別,注意前面的點,即只要是為顯式的聲明,前面帶不帶點沒有區(qū)別。 1 Cookie簡介 Cookie是由W3C組織提出,最早由NetScape社區(qū)發(fā)展的一種機制。Cookie是存儲于訪問者的計算機中的變量。每當(dāng)同一臺計算機通過瀏覽器請求某...
摘要:如圖圖顧名思義,,是級別的存儲。如筆者寫的一篇淺析文章聊一聊百度移動端首頁前端速度那些事兒讀者們可以嘗試使用。 歡迎大家收看聊一聊系列,這一套系列文章,可以幫助前端工程師們了解前端的方方面面(不僅僅是代碼):https://segmentfault.com/blog/frontenddriver 在web開發(fā)越來越復(fù)雜的今天,前端擁有的能力也越來越多。其中最重要的一項莫過于web存儲。...
閱讀 652·2021-11-24 09:39
閱讀 3012·2021-11-23 10:06
閱讀 981·2021-10-08 10:05
閱讀 754·2019-08-30 10:49
閱讀 1718·2019-08-29 14:08
閱讀 1325·2019-08-29 12:48
閱讀 3320·2019-08-26 14:04
閱讀 3613·2019-08-26 13:50