使用localStorage制作歷史搜索記錄

2023-02-22    分類: 網站建設

localStorag是在HTML5中,新加入的一個特性,localStorage主要是用來作為本地存儲來使用的,用來解決cookie存儲空間不足的問題,因為cookie中每條cookie的存儲空間為4k,但是localStorage在一般瀏覽器中支持的是5M大小,這個大小在不同的瀏覽器中會有所不同。
localStorage的優(yōu)勢是拓展了cookie的4K限制,localStorage會可以將第一次請求的數(shù)據(jù)直接存儲到本地,這個相當于一個5M大小的針對于前端頁面的數(shù)據(jù)庫,相比于cookie可以節(jié)約帶寬,但是局限性是只有在IE8以上的IE版本才支持localStorage這個屬性。目前所有的瀏覽器中都會把localStorage的值類型限定為string類型,所以在使用時,需要把string類型轉成我們常用的JSON數(shù)組對象類型。localStorage在瀏覽器的隱私模式下是不可讀取的,localStorage本質上是對字符串的讀取,如果存儲內容多的話會消耗內存空間,會導致頁面變卡,所以需要控制存儲的數(shù)據(jù)量,或者清除存儲數(shù)據(jù)。localStorage不能被爬蟲抓取到,從一定程度上保護了用戶個人隱私。

input

以下是使用展示

JS代碼
因為我搜索框與展示搜索結果記錄的頁面是分開的,所以我這邊是先把搜索值傳遞到后臺,然后再傳到前端。
搜索列表
然后就能得到以下的歷史搜索記錄列表
JS
根據(jù)網站的需求,我這邊還加上了刪除單條歷史搜索記錄,清除所有歷史搜索記錄以及根據(jù)歷史搜索記錄再查詢功能。
以下貼具體代碼:
html
前端代碼:
<div class="orderlist">
<ul id="keyname">
</ul>
<div class="btn">
<input type="button" id="Clear" onclick="DeletaAll()" value="Clear" class="b1" />
<input type="button" id="Track" onclick="Track()" value="Track" class="b2"/>
</div>
</div>
JS代碼
Javascript代碼:
<script>
var searchArr;
//定義一個search用來存儲搜索記錄的,判斷瀏覽器有無數(shù)據(jù)存儲(搜索歷史)
if(localStorage.search){
//如果有,則把搜索記錄轉成數(shù)組的形式存放到searchArr的數(shù)組里(localStorage以字符串的形式存儲,所以要把它轉換成數(shù)組的形式)
searchArr= localStorage.search.split(",")
}else{
//如果沒有,則定義searchArr為一個空的數(shù)組
searchArr = [];
}
// console.log(searchArr);
//把存儲的數(shù)據(jù)顯示出來作為搜索歷史
MapSearchArr();
$(function(){
var val = '{$trackNo}';//接收從后臺傳來的搜索值
if(val!=''){
//判斷搜索值是否已重復,如果重復就去重
KillRepeat(val);
//去重后把數(shù)組存儲到瀏覽器localStorage
localStorage.search = searchArr;
//然后再把搜索內容顯示出來
MapSearchArr();
}
});
function MapSearchArr(){
var tmpHtml = "";
for (var i=0;i<searchArr.length;i++){
var n = i+1;
tmpHtml += "<li onclick='Choose(this)'><div class='t1'>"+n+".</div><div class='t2'>"+searchArr[i]+"</div><div class='ic' onclick='Del(this)'></div></li>"
}
$("#keyname").html(tmpHtml);
}
//去重
function KillRepeat(val){
var kill = 0;
for (var i=0;i<searchArr.length;i++){
if(val===searchArr[i]){
kill ++;
}
}
if(kill<1){
searchArr.push(val);
}
}
//刪除搜索記錄
function Del(obj){
var n = $(obj).prev().text();
DeleteArr(n);
}
//刪除
function DeleteArr(val){
for (var i=0;i<searchArr.length;i++){
if(val==searchArr[i]){
searchArr.splice(i,1);
}
}
if(searchArr.length==0){
DeletaAll();
}else{
localStorage.search = searchArr;
window.location.reload();
}
}
//刪除所有的搜索記錄
function DeletaAll(){
localStorage.clear();
window.location.href="{:urlrotue('Search/index2')}";
}
function Choose(obj){
$(obj).addClass('on').siblings().removeClass('on');
}
//點擊搜索記錄進行查詢
function Track(){
var trackno = $(".on").children('.t2').text();
window.location.href = "{:urlrotue('Search/index2')}?trackNo="+ trackno;
}
</script>

新聞標題:使用localStorage制作歷史搜索記錄
鏈接地址:http://www.muchs.cn/news2/238952.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供面包屑導航、網站排名、網站內鏈、網站營銷搜索引擎優(yōu)化、ChatGPT

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網站建設網站維護公司