關於localStorage的實際應用
阿新 • • 發佈:2018-01-31
blog 分享圖片 商品 aos body lan rap ast session
在客戶端存儲數據
HTML5 提供了兩種在客戶端存儲數據的新方法:
- localStorage - 沒有時間限制的數據存儲
- sessionStorage - 針對一個 session 的數據存儲
之前,這些都是由 cookie 完成的。但是 cookie 不適合大量數據的存儲,因為它們由每個對服務器的請求來傳遞,這使得 cookie 速度很慢而且效率也不高。
在 HTML5 中,數據不是由每個服務器請求傳遞的,而是只有在請求時使用數據。它使在不影響網站性能的情況下存儲大量數據成為可能。
對於不同的網站,數據存儲於不同的區域,並且一個網站只能訪問其自身的數據。
HTML5 使用 JavaScript 來存儲和訪問數據。
1.html代碼
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <title>搜索中心</title> <link rel="stylesheet" href="assets/mui/css/mui.min.css"> <link rel="stylesheet" href="assets/fa/css/font-awesome.min.css"> <link rel="stylesheet" href="css/mobile.css"> </head> <body> <div class="lt_container"> <!--頂部--> <header class="lt_topBar"> <a href="javascript:history.back();" class="mui-icon mui-icon-back left"></a> 搜索中心</header> <!--內容--> <div class="lt_content"> <div class="lt_wrapper"> <!--搜索框--> <div class="lt_search"> <input type="search" placeholder="搜索你喜歡的商品"> <a href="javascript:;">搜索</a> </div> <!--歷史列表--> <div class="lt_history"> <!--TODO--> </div> </div> </div> <!--底部--> <footer class="lt_tabs"> <a href="index.html"><span class="fa fa-home"></span><p>首頁</p></a> <a href="category.html"><span class="fa fa-bars"></span><p>分類</p></a> <a href="user/cart.html"><span class="fa fa-shopping-cart"></span><p>購物車</p></a> <a href="user/index.html"><span class="fa fa-user"></span><p>個人中心</p></a> </footer> </div> <script type="text/template" id="list"> <% if($data.length){ %> <div class="tit"> <span class="name">搜索歷史</span> <a class="clear" href="javascript:;"><span class="fa fa-trash"></span>清空歷史</a> </div> <ul> <% for(var i = $data.length-1 ; i >=0 ; i --){ %> <li><a href="javascript:;" data-key="<%=$data[i]%>"><%=$data[i]%></a><span data-index="<%=i%>" class="fa fa-close"></span></li> <% } %> </ul> <% }else{ %> <div class="tit"> <span class="name">沒有搜索歷史記錄</span> </div> <% } %> </script> <script src="assets/mui/js/mui.min.js"></script> <script src="assets/zepto/zepto.min.js"></script> <script src="assets/art-template/template-web.js"></script> <script src="js/search.js"></script> </body> </html>
2.js代碼
$(function () { $(‘.lt_search input‘).val(‘‘); /*1. 默認渲染當前歷史記錄*/ var storageKey = ‘leTaoSearchHistoryList‘; /*1.1 需要約定當前網站存歷史記錄的KEY和數據類型 leTaoSearchHistoryList = ‘["電腦","手機"]‘*/ var jsonString = localStorage.getItem(storageKey) || ‘[]‘; var historyList = JSON.parse(jsonString); $(‘.lt_history‘).html(template(‘list‘, historyList)); //$(‘.lt_history‘).html(template(‘list‘, {list:historyList,encodeURIComponent:encodeURIComponent})); /*2. 點擊搜索記錄新的搜索歷史 跳轉去搜索列表頁*/ /*2.1 添加之後 追加在最前面*/ /*2.2 如果遇見相同的關鍵字 刪除之前的 追加在最前面*/ /*2.3 當記錄的條數超過10條 刪除之前的後面的 追加在最前面*/ $(‘.lt_search a‘).on(‘tap‘, function () { //去除輸入的內容 去了兩端空格 var key = $.trim($(‘.lt_search input‘).val()); // 判斷是否輸入 if (!key) { mui.toast(‘請輸入關鍵字‘); return false; } // 有關鍵字 /*刪除相同的*/ $.each(historyList, function (i, item) { if (item == key) { historyList.splice(i, 1); /*中斷循環*/ return false; } }); /*加載最後*/ historyList.push(key); /*超過10條刪掉*/ if (historyList.length > 10) { historyList.splice(0, historyList.length - 10); } /*存起來*/ localStorage.setItem(storageKey, JSON.stringify(historyList)); /*渲染 會跳走 沒有必要*/ //$(‘.lt_history‘).html(template(‘list‘, historyList)); /*跳轉 傳數據轉成URL編碼*/ location.href = ‘/mobile/searchList.html?key=‘+encodeURIComponent(key); }) /*3. 點擊刪除 刪除當前的歷史記錄*/ $(‘.lt_history‘).on(‘tap‘, ‘li span‘, function () { var index = $(this).data(‘index‘); console.log(index); historyList.splice(index, 1); /*存起來*/ localStorage.setItem(storageKey, JSON.stringify(historyList)); /*渲染 會跳走 沒有必要*/ $(‘.lt_history‘).html(template(‘list‘, historyList)); }).on(‘tap‘,‘.clear‘,function () { /*4. 點擊清空 清空所有的歷史記錄*/ historyList = []; localStorage.setItem(storageKey, ‘[]‘); /*渲染 會跳走 沒有必要*/ $(‘.lt_history‘).html(template(‘list‘, historyList)); }).on(‘tap‘,‘li a‘,function () { var key = $(this).data(‘key‘); /*跳轉 傳數據轉成URL編碼*/ location.href = ‘/mobile/searchList.html?key=‘+encodeURIComponent(key); }); });
關於localStorage的實際應用