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