最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript使用localStorage存儲數(shù)據(jù)

 更新時間:2021年04月26日 10:19:41   作者:Moshow鄭鍇  
這篇文章主要為大家詳細介紹了JavaScript使用localStorage存儲數(shù)據(jù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

背景

以前js都是 SessionCookie 來存儲信息,仿佛我還停留在那個時候,一問同事有沒有新的solution,才知道現(xiàn)在已經(jīng)有 HTML5 localStorage 本地存儲 這個東西,可以在瀏覽器端儲存數(shù)據(jù)。

記得最早的Cookies只能存很小的東西,4KB的樣子,并且安全性很差,在IE6時代一個域名也只能二十個Cookies吧,限制挺大,當然IE還有userData的東西,沒什么用。Flash也帶了一個Storage,相對比較大,空間是Cookie的25倍左右,當時現(xiàn)在也廢棄Flash了。

到了H5時代,就統(tǒng)一了,LocalStorage一統(tǒng)天下。官方建議是每個網(wǎng)站 5MB ,非常大了,雖然瀏覽器設置會有差異,但是一般就存些JSON或者字符串或者緩存來說,足夠了。

HTML5 LocalStorage 本地存儲

  • sessionStorage:保存的數(shù)據(jù)用于瀏覽器的一次會話,當會話結束(通常是該窗口關閉),數(shù)據(jù)被清空;
  • localStorage:保存的數(shù)據(jù)長期存在,下一次訪問該網(wǎng)站的時候,網(wǎng)頁可以直接讀取以前保存的數(shù)據(jù)。除了保存期限的長短不同,這兩個對象的屬性和方法完全一樣。

它們很像cookie機制的強化版,雖然能夠動用大得多的存儲空間。但是,與cookie一樣,它們也受同域限制。某個網(wǎng)頁存入的數(shù)據(jù),只有同域下的網(wǎng)頁才能讀取。

通過檢查window對象是否包含 sessionStorage 和 localStorage 屬性,可以確定瀏覽器是否支持這兩個對象。

function checkStorageSupport()
{
 // sessionStorage
 if (window.sessionStorage) {
  return true;
 } else {
  return false;
 }
 
 // localStorage
 if (window.localStorage) {
  return true;
 } else {
  return false;
 }
}

Storage 操作

sessionStorage 和 localStorage 保存的數(shù)據(jù),都以 “Key-Value鍵值對” 的形式存在。也就是說,每一項數(shù)據(jù)都有一個鍵名和對應的值。所有的數(shù)據(jù)都是以文本格式保存。

//sessionStorage 操作
sessionStorage.setItem("key","value");     // setItem方法,存儲變量名為key,值為value的變量
var valueSession = sessionStorage.getItem("key");  // getItem方法,讀取存儲變量名為key的值
sessionStorage.removeItem('key');      // removeItem方法,刪除變量名為key的存儲變量
sessionStorage.clear();        // clear方法,清除所有保存數(shù)據(jù)
//localStorage 操作
localStorage.setItem("key","value");     // 存儲變量名為key,值為value的變量
localStorage.key = "value"        // 同setItem方法,存儲數(shù)據(jù)
var valueLocal = localStorage.getItem("key");   // 讀取存儲變量名為key的值
var valueLocal = localStorage.key;      // 同getItem,讀取數(shù)據(jù)
localStorage.removeItem('key');      // removeItem方法,刪除變量名為key的存儲變量
localStorage.clear();         // clear方法,清除所有保存的數(shù)據(jù)

// 利用length屬性和key方法,遍歷所有的數(shù)據(jù)
for(var i = 0; i < localStorage.length; i++)
{
 console.log(localStorage.key(i));
}

// 存儲 localStorage 數(shù)據(jù)為 Json 格式
value = JSON.stringify(jsonValue);      // 將 JSON 對象 jsonValue 轉化成字符串
localStorage.setItem("key", value);     // 用 localStorage 保存轉化好的的字符串

// 讀取 localStorage 中 Json 格式數(shù)據(jù)
var value = localStorage.getItem("key");    // 取回 value 變量
jsonValue = JSON.parse(value);      // 把字符串轉換成 JSON 對象

Storage 事件

當儲存的數(shù)據(jù)發(fā)生變化時,會觸發(fā) storage 事件。我們可以指定這個事件的回調函數(shù)。

window.addEventListener("storage",onStorageChange);

回調函數(shù)接受一個event對象作為參數(shù)。這個event對象的key屬性,保存發(fā)生變化的鍵名。

function onStorageChange(e)
{
  console.log(e.key); 
}

除了key屬性,event對象的屬性還有三個:

  • oldValue:更新前的值。如果該鍵為新增加,則這個屬性為null。
  • newValue:更新后的值。如果該鍵被刪除,則這個屬性為null。
  • url:原始觸發(fā)storage事件的那個網(wǎng)頁的網(wǎng)址。

!!! 特別注意的是,該事件不在導致數(shù)據(jù)變化的當前頁面觸發(fā)。如果瀏覽器同時打開一個域名下面的多個頁面,當其中的一個頁面改變sessionStorage或localStorage的數(shù)據(jù)時,其他所有頁面的storage事件會被觸發(fā),而原始頁面并不觸發(fā)storage事件??梢酝ㄟ^這種機制,實現(xiàn)多個窗口之間的通信。所有瀏覽器之中,只有IE瀏覽器除外,它會在所有頁面觸發(fā)storage事件。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

最新評論

荃湾区| 锦州市| 沙坪坝区| 平远县| 墨玉县| 德州市| 墨江| 青浦区| 开平市| 赤水市| 灵石县| 阜新市| 贵南县| 伊宁市| 新竹县| 合川市| 漳平市| 邓州市| 中牟县| 十堰市| 高尔夫| 天祝| 清远市| 浮梁县| 赣州市| 荆门市| 临城县| 克拉玛依市| 都昌县| 柞水县| 镇雄县| 西畴县| 余干县| 安国市| 新余市| 金塔县| 临海市| 玉山县| 达孜县| 安平县| 贵港市|