真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

背景

專(zhuān)注于為中小企業(yè)提供做網(wǎng)站、成都做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)朝陽(yáng)免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上1000+企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

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

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

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

HTML5 LocalStorage 本地存儲(chǔ)

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

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

通過(guò)檢查window對(duì)象是否包含 sessionStorage 和 localStorage 屬性,可以確定瀏覽器是否支持這兩個(gè)對(duì)象。

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鍵值對(duì)” 的形式存在。也就是說(shuō),每一項(xiàng)數(shù)據(jù)都有一個(gè)鍵名和對(duì)應(yīng)的值。所有的數(shù)據(jù)都是以文本格式保存。

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

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

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

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

Storage 事件

當(dāng)儲(chǔ)存的數(shù)據(jù)發(fā)生變化時(shí),會(huì)觸發(fā) storage 事件。我們可以指定這個(gè)事件的回調(diào)函數(shù)。

window.addEventListener("storage",onStorageChange);

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

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

除了key屬性,event對(duì)象的屬性還有三個(gè):

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

!!! 特別注意的是,該事件不在導(dǎo)致數(shù)據(jù)變化的當(dāng)前頁(yè)面觸發(fā)。如果瀏覽器同時(shí)打開(kāi)一個(gè)域名下面的多個(gè)頁(yè)面,當(dāng)其中的一個(gè)頁(yè)面改變sessionStorage或localStorage的數(shù)據(jù)時(shí),其他所有頁(yè)面的storage事件會(huì)被觸發(fā),而原始頁(yè)面并不觸發(fā)storage事件。可以通過(guò)這種機(jī)制,實(shí)現(xiàn)多個(gè)窗口之間的通信。所有瀏覽器之中,只有IE瀏覽器除外,它會(huì)在所有頁(yè)面觸發(fā)storage事件。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


網(wǎng)頁(yè)標(biāo)題:JavaScript使用localStorage存儲(chǔ)數(shù)據(jù)
當(dāng)前鏈接:http://weahome.cn/article/popjpe.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部