Samgao0312 / Blog

MIT License
1 stars 1 forks source link

Cookie、localStorage 与 sessionStorage #115

Open Samgao0312 opened 2 years ago

Samgao0312 commented 2 years ago

webstorage

webstorage 是本地存储,存储在客户端。包括localStorage和sessionStorage。

localStorage

sessionStorage

源生接口可以接受,亦可再次封装来对Object和Array有更好的支持。 localStorage和sessionStorage使用时使用相同的API:

localStorage.setItem("key","value");//以“key”为名称存储一个值“value”

localStorage.getItem("key");//获取名称为“key”的值

localStorage.removeItem("key");//删除名称为“key”的信息。

localStorage.clear();​//清空localStorage中所有信息

实例:仿京东官网顶部的广告弹窗关闭效果 仿一下京东官网顶部的广告关闭,效果为第一次进入官网会出现广告,然后点击关闭,刷新网页不会再显示广告,但是当清除localStorage存入的数据,刷新网页会再显示广告。

html代码:

<div class="header">
    <div class="header-a">
        <a href=""></a>
        <i class="close">x</i>
    </div>
</div> 

css代码:

.header{
    width:100%;
    height:80px;
    background:#000;
}
.header-a{
    width:1190px;
    margin:0 auto;
    position:relative;
    background:url("images/1.jpg") no-repeat;
}
.header-a a{
    width:100%;
    height:80px;
    display:block;
}
.close{
    cursor:pointer;
    color:#fff;
    position:absolute;
    top:5px;
    right:5px;
    background:rgb(129, 117, 117);
    width: 20px;
    text-align: center;
    line-height: 20px;
}    

js代码:

//localStorage方法
<script src="../js/jquery.min.js"></script>
function haxi(){
    //判断localStorage里有没有isClose
    if(localStorage.getItem("isClose")){             
        $(".header").hide();
    }else{
        $(".header").show();
    }
    //点击关闭隐藏图片存取数据
    $(".close").click(function(){
        $(".header").fadeOut(1000);

        localStorage.setItem("isClose", "1"); 
    })
}
haxi();

Cookie

但Cookie需要程序员自己封装,源生的Cookie接口不友好(http://www.jb51.net/article/6... )。看下面代码:

//Cookie方法
<script src="../js/cookie.js"></script> //Cookie函数自己封装引入
function haxi() {
    if(getCookie("isClose")){             
        $(".header").hide();
    }else{
        $(".header").show();
    }

    $(".close").click(function(){
        $(".header").fadeOut(1000);

        setCookie("isClose", "1","s10");
    })
}
haxi();

cookie的优点:具有极高的扩展性和可用性

1.通过良好的编程,控制保存在cookie中的session对象的大小。
2.通过加密和安全传输技术,减少cookie被破解的可能性。
3.只有在cookie中存放不敏感的数据,即使被盗取也不会有很大的损失。
4.控制cookie的生命期,使之不会永远有效。这样的话偷盗者很可能拿到的就   是一个过期的cookie。

cookie的缺点:

1.cookie的长度和数量的限制。每个domain最多只能有20条cookie,每个cookie长度不能超过4KB。否则会被截掉。
2.安全性问题。如果cookie被人拦掉了,那个人就可以获取到所有session信息。加密的话也不起什么作用。
3.有些状态不可能保存在客户端。例如,为了防止重复提交表单,我们需要在服务端保存一个计数器。若吧计数器保存在客户端,则起不到什么作用。