在客戶端存儲(chǔ)數(shù)據(jù)html5 提供了兩種在客戶端存儲(chǔ)數(shù)據(jù)的新方法: localStorage - 沒有時(shí)間限制的數(shù)據(jù)存儲(chǔ) 之前,這些都是由 cookie 完成的。但是 cookie 不適合大量數(shù)據(jù)的存儲(chǔ),因?yàn)樗鼈冇擅總(gè)對(duì)服務(wù)器的請(qǐng)求來傳遞,這使得 cookie 速度很慢而且效率也不高。 在 html5 中,數(shù)據(jù)不是由每個(gè)服務(wù)器請(qǐng)求傳遞的,而是只有在請(qǐng)求時(shí)使用數(shù)據(jù)。它使在不影響網(wǎng)站性能的情況下存儲(chǔ)大量數(shù)據(jù)成為可能。 對(duì)于不同的網(wǎng)站,數(shù)據(jù)存儲(chǔ)于不同的區(qū)域,并且一個(gè)網(wǎng)站只能訪問其自身的數(shù)據(jù)。 HTML5 使用 JavaScript 來存儲(chǔ)和訪問數(shù)據(jù)。 什么是 HTML5 Web 存儲(chǔ) ?我們可以使用 HTML5 在用于的瀏覽器上存儲(chǔ)用戶的瀏覽數(shù)據(jù) 在 HTML5 之前,本地存儲(chǔ)使用的是 Cookie 但是 Web 存儲(chǔ)需要更加的安全與快速. 這些數(shù)據(jù)不會(huì)被保存在服務(wù)器上,但是這些數(shù)據(jù)只用于用戶請(qǐng)求網(wǎng)站數(shù)據(jù)上 它也可以存儲(chǔ)大量的數(shù)據(jù),而不影響網(wǎng)站的性能 數(shù)據(jù)以 鍵/值 對(duì)存在,web 網(wǎng)頁(yè)的數(shù)據(jù)只允許該網(wǎng)頁(yè)訪問使用 localStorage 方法localStorage 方法存儲(chǔ)的數(shù)據(jù)沒有時(shí)間限制。第二天、第二周或下一年之后,數(shù)據(jù)依然可用。 如何創(chuàng)建和訪問 localStorage: 實(shí)例<script type="text/JavaScript"> localStorage.lastname="Smith"; document.write(localStorage.lastname); </script> 下面的例子對(duì)用戶訪問頁(yè)面的次數(shù)進(jìn)行計(jì)數(shù): 實(shí)例<script type="text/javascript"> if (localStorage.pagecount) { localStorage.pagecount=Number(localStorage.pagecount) +1; } else { localStorage.pagecount=1; } document.write("Visits "+ localStorage.pagecount + " time(s)."); </script> 常用的有如下幾個(gè)
提示: 鍵/值對(duì)通常以字符串存儲(chǔ),當(dāng)然了,我們可以按自己的需要轉(zhuǎn)換該格式 sessionStorage 方法sessionStorage 方法針對(duì)一個(gè) session 進(jìn)行數(shù)據(jù)存儲(chǔ)。當(dāng)用戶關(guān)閉瀏覽器窗口后,數(shù)據(jù)會(huì)被刪除。 如何創(chuàng)建并訪問一個(gè) sessionStorage: 實(shí)例<script type="text/javascript"> sessionStorage.lastname="Smith"; document.write(sessionStorage.lastname); </script> 下面的例子對(duì)用戶在當(dāng)前 session 中訪問頁(yè)面的次數(shù)進(jìn)行計(jì)數(shù): 實(shí)例<script type="text/javascript"> if (sessionStorage.pagecount) { sessionStorage.pagecount=Number(sessionStorage.pagecount) +1; } else { sessionStorage.pagecount=1; } document.write("Visits "+sessionStorage.pagecount+" time(s) this session."); </script> Web Storage 開發(fā)一個(gè)簡(jiǎn)單的網(wǎng)站列表程序接下來我們使用 Web Storage 來開發(fā)一個(gè)簡(jiǎn)單的網(wǎng)站列表程序,它包含以下功能
下面的代碼用于保存數(shù)據(jù) //保存數(shù)據(jù) function save(){ var siteurl = document.getElementById("siteurl").value; var sitename = document.getElementById("sitename").value; localStorage.setItem(sitename,siteurl); alert("添加成功"); } 下面的代碼用于查找數(shù)據(jù) //查找數(shù)據(jù) function find(){ var search_site = document.getElementById("search_site").value; var sitename = localStorage.getItem(search_site); var find_result = document.getElementById("find_result"); find_result.innerHTML = search_site + "的網(wǎng)址是:" + sitename; } 完整的代碼如下 <div style="border: 2px dashed #ccc;width:320px;text-align:center;"> <label for="sitename">網(wǎng)站名(key):</label> <input type="text" id="sitename" name="sitename" class="text"/> <br/> <label for="siteurl">網(wǎng) 址(value):</label> <input type="text" id="siteurl" name="siteurl"/> <br/> <input type="button" onclick="save()" value="新增記錄"/> <hr/> <label for="search_site">輸入網(wǎng)站名:</label> <input type="text" id="search_site" name="search_site"/> <input type="button" onclick="find()" value="查找網(wǎng)站"/> <p id="find_result"><br/></p> </div> 這個(gè)范例知識(shí)簡(jiǎn)單的演示了下 localStorage 存儲(chǔ)與查找,更多情況下我們存儲(chǔ)的數(shù)據(jù)會(huì)更復(fù)雜 接下來我們使用 jsON.stringify 來存儲(chǔ)對(duì)象數(shù)據(jù) var site = new Object; ... var str = JSON.stringify(site); // 將對(duì)象轉(zhuǎn)換為字符串 然后再使用 JSON.parse 方法將字符串轉(zhuǎn)換為 JSON 對(duì)象 var site = JSON.parse(str); save() 方法//保存數(shù)據(jù) function save(){ var site = new Object; site.keyname = document.getElementById("keyname").value; site.sitename = document.getElementById("sitename").value; site.siteurl = document.getElementById("siteurl").value; var str = JSON.stringify(site); // 將對(duì)象轉(zhuǎn)換為字符串 localStorage.setItem(site.keyname,str); alert("保存成功"); } find() 方法//查找數(shù)據(jù) function find(){ var search_site = document.getElementById("search_site").value; var str = localStorage.getItem(search_site); var find_result = document.getElementById("find_result"); var site = JSON.parse(str); find_result.innerHTML = search_site + "的網(wǎng)站名是:" + site.sitename + ",網(wǎng)址是:" + site.siteurl; } 完整的代碼如下 <div style="border: 2px dashed #ccc;width:320px;text-align:center;"> <label for="keyname">別名(key):</label> <input type="text" id="keyname" name="keyname" class="text"/> <br/> <label for="sitename">網(wǎng)站名:</label> <input type="text" id="sitename" name="sitename" class="text"/> <br/> <label for="siteurl">網(wǎng) 址:</label> <input type="text" id="siteurl" name="siteurl"/> <br/> <input type="button" onclick="save()" value="新增記錄"/> <hr/> <label for="search_site">輸入別名(key):</label> <input type="text" id="search_site" name="search_site"/> <input type="button" onclick="find()" value="查找網(wǎng)站"/> <p id="find_result"><br/></p> </div> 范例中的 loadAll 輸出了所有存儲(chǔ)的數(shù)據(jù),我們需要確保 localStorage 存儲(chǔ)的數(shù)據(jù)都為 JSON 格式,否則 JSON.parse(str) 將會(huì)報(bào)錯(cuò)。 |