使用localStorage制作历史搜索记录

发布时间:2025-04-19 点击:19
localstorag是在html5中,新加入的一个特性,localstorage主要是用来作为本地存储来使用的,用来解决cookie存储空间不足的问题,因为cookie中每条cookie的存储空间为4k,但是localstorage在一般浏览器中支持的是5m大小,这个大小在不同的浏览器中会有所不同。
localstorage的优势是拓展了cookie的4k限制,localstorage会可以将第一次请求的数据直接存储到本地,这个相当于一个5m大小的针对于前端页面的数据库,相比于cookie可以节约带宽,但是局限性是只有在ie8以上的ie版本才支持localstorage这个属性。目前所有的浏览器中都会把localstorage的值类型限定为string类型,所以在使用时,需要把string类型转成我们常用的json数组对象类型。localstorage在浏览器的隐私模式下是不可读取的,localstorage本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,会导致页面变卡,所以需要控制存储的数据量,或者清除存储数据。localstorage不能被爬虫抓取到,从一定程度上保护了用户个人隐私。
以下是使用展示
因为我搜索框与展示搜索结果记录的页面是分开的,所以我这边是先把搜索值传递到后台,然后再传到前端。
然后就能得到以下的历史搜索记录列表
根据网站的需求,我这边还加上了删除单条历史搜索记录,清除所有历史搜索记录以及根据历史搜索记录再查询功能。
以下贴具体代码:
前端代码:
<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>
javascript代码:
<script>
var searcharr;
//定义一个search用来存储搜索记录的,判断浏览器有无数据存储(搜索历史)
if(localstorage.search){
//如果有,则把搜索记录转成数组的形式存放到searcharr的数组里(localstorage以字符串的形式存储,所以要把它转换成数组的形式)
searcharr= localstorage.search.split(",")
}else{
//如果没有,则定义searcharr为一个空的数组
searcharr = [];
}
// console.log(searcharr);
//把存储的数据显示出来作为搜索历史
mapsearcharr();
$(function(){
var val = '{$trackno}';//接收从后台传来的搜索值
if(val!=''){
//判断搜索值是否已重复,如果重复就去重
killrepeat(val);
//去重后把数组存储到浏览器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>

vps服务器可以做官网网站吗?
百度竞价关键词选择技巧!
网页设计中常用的几种图片格式有何区别?
怎样追踪新加坡服务器的IP地址?
掌握小程序推广策略,让你的小程序商城强势吸粉
如何建设一个养老网站
网站日志分析对seo优化有哪些帮助
网站建设的发展历史与新方向