在客戶端存儲數(shù)據(jù)html5 提供了兩種在客戶端存儲數(shù)據(jù)的新方法: localStorage - 沒有時間限制的數(shù)據(jù)存儲 之前,這些都是由 cookie 完成的。但是 cookie 不適合大量數(shù)據(jù)的存儲,因為它們由每個對服務(wù)器的請求來傳遞,這使得 cookie 速度很慢而且效率也不高。 在 html5 中,數(shù)據(jù)不是由每個服務(wù)器請求傳遞的,而是只有在請求時使用數(shù)據(jù)。它使在不影響網(wǎng)站性能的情況下存儲大量數(shù)據(jù)成為可能。 對于不同的網(wǎng)站,數(shù)據(jù)存儲于不同的區(qū)域,并且一個網(wǎng)站只能訪問其自身的數(shù)據(jù)。 HTML5 使用 JavaScript 來存儲和訪問數(shù)據(jù)。 什么是 HTML5 Web 存儲 ?我們可以使用 HTML5 在用于的瀏覽器上存儲用戶的瀏覽數(shù)據(jù) 在 HTML5 之前,本地存儲使用的是 Cookie 但是 Web 存儲需要更加的安全與快速. 這些數(shù)據(jù)不會被保存在服務(wù)器上,但是這些數(shù)據(jù)只用于用戶請求網(wǎng)站數(shù)據(jù)上 它也可以存儲大量的數(shù)據(jù),而不影響網(wǎng)站的性能 數(shù)據(jù)以 鍵/值 對存在,web 網(wǎng)頁的數(shù)據(jù)只允許該網(wǎng)頁訪問使用 localStorage 方法localStorage 方法存儲的數(shù)據(jù)沒有時間限制。第二天、第二周或下一年之后,數(shù)據(jù)依然可用。 如何創(chuàng)建和訪問 localStorage: 實例<script type="text/JavaScript"> localStorage.lastname="Smith"; document.write(localStorage.lastname); </script> 下面的例子對用戶訪問頁面的次數(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>常用的有如下幾個
提示: 鍵/值對通常以字符串存儲,當然了,我們可以按自己的需要轉(zhuǎn)換該格式 sessionStorage 方法sessionStorage 方法針對一個 session 進行數(shù)據(jù)存儲。當用戶關(guān)閉瀏覽器窗口后,數(shù)據(jù)會被刪除。 如何創(chuàng)建并訪問一個 sessionStorage: 實例<script type="text/javascript"> sessionStorage.lastname="Smith"; document.write(sessionStorage.lastname); </script> 下面的例子對用戶在當前 session 中訪問頁面的次數(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ā)一個簡單的網(wǎng)站列表程序接下來我們使用 Web Storage 來開發(fā)一個簡單的網(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> 這個范例知識簡單的演示了下 localStorage 存儲與查找,更多情況下我們存儲的數(shù)據(jù)會更復雜 接下來我們使用 jsON.stringify 來存儲對象數(shù)據(jù) var site = new Object; ... var str = JSON.stringify(site); // 將對象轉(zhuǎn)換為字符串 然后再使用 JSON.parse 方法將字符串轉(zhuǎn)換為 JSON 對象 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); // 將對象轉(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 輸出了所有存儲的數(shù)據(jù),我們需要確保 localStorage 存儲的數(shù)據(jù)都為 JSON 格式,否則 JSON.parse(str) 將會報錯。 |