欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

html5的web存储 sessionStorage和 localStorage

程序员文章站 2022-06-10 09:34:36
...
  1. 需求:随着互联网的快速发展,基于网页的应用越来越普遍,同时也变的越来越复杂,为了满足各种各样的需求,会经常性在本地存储大量的数据,传统方式我们以document.cookie来进行存储的,但是由于其存储大小只有4k左右,并且解析也相当的复杂,给开发带来诸多不便,HTML5规范则提出解决方案
  2. HTML5提供的解决方案:
    1. window.sessionStorage
    2. window.localStorage
  3. 特点:
  • 设置、读取方便
  • 容量较大,sessionStorage约5M、localStorage约20M
  • 只能存储字符串,可以将对象JSON.stringify() 编码后存储
  1. Window.sessionStorage的使用
    1. 特点:
      1. 生命周期为关闭浏览器窗口:相当于存储在当前页面的内内存中
      2. 在同一个窗口下数据可以共享(在当前页面下可以获取到,换另外一个页面下不能获取到)
    2. 方法介绍:(两种存储方式的方法一致)
      1. SetItem(key,value):设置数据,以键值对的方式
      2. getItem(key):通过指定的键获取对应的值内容
      3. removeItem(key):删除指定的key及对应的值内容
      4. clear():清空所有存储内容
    3. 使用说明:
<script>
    var userData=document.getElementById("userName");
    //存储数据
    document.getElementById("setData").οnclick=function(){
        window.sessionStorage.setItem("userName",userData.value);
    }
    //获取数据
    document.getElementById("getData").οnclick=function(){
        var value=window.sessionStorage.getItem("userName");
        alert(value);
    }
</script>
  1. Window.localStorage的使用
    1. 特点:
      1. 永久生效,除非手动删除:存储在硬盘上
      2. 可以多窗口共享。但是不能跨浏览器
    2. 使用说明:
<script>
    var userData=document.getElementById("userName");
    //存储数据
    document.getElementById("setData").οnclick=function(){
        window.localStorage.setItem("userName",userData.value);
    }
    //获取数据
    document.getElementById("getData").οnclick=function(){
        var value=window.localStorage.getItem("userName");
        alert(value);
    }
    //删除数据
    document.getElementById("removeData").οnclick=function(){
        window.localStorage.removeItem("userName");
    }
</script>

案例web存储登录名

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div{
            width: 300px;
            height: 200px;
            border: 1px solid #ccc;
            margin:0 auto;
            padding-left:80px;
            padding-top:30px;
        }
        label{
            height: 30px;
            line-height:30px;
        }
        input[type="submit"]{
            width:230px;
            height: 30px;
            line-height:30px;
            text-align: center;
            margin-top:10px;
        }
    </style>

</head>
<body>
<div>
    <label for="userName">昵称:</label>
    <input type="text" name="userName" id="userName"> <br>
    <label for="userPwd">密码:</label>
    <input type="password" name="userPwd" id="userPwd"> <br>
    <label for="isRemenber">是否记住用户名:</label>
    <input type="checkbox" id="isRemenber"><br>
    <input type="submit" value="提交" id="submit">
</div>
<script>
    window.οnlοad=function(){

        /*页面打开,判断是否存储过用户名---*/
        var uName=window.localStorage.getItem('userName');
        if(uName != null){//说明之前存储过值,说明用户希望记住用户名
            document.getElementById('userName').value=uName;
            document.getElementById('userPwd').focus();
        }
        else{
            document.getElementById('userName').focus();
        }

        /*点击登录时存储数据*/
        document.getElementById("submit").οnclick=function(){
            var name=document.getElementById('userName').value;
            /*判断用户是否选择记住用户名*/
            var isRemenber=document.getElementById('isRemenber');
            if(isRemenber.checked==true){
                /*存储数据到localstorage*/
                window.localStorage.setItem('userName',name);
            }
            else{
                window.localStorage.removeItem('userName');
            }
            window.location.href="http://www.taobao.com";
        }
    }
</script>
</body>
</html>
$(document).ready(function () {
    /*web存储*/
    /*页面打开,判断是否存储过用户名---*/
    var loginName = localStorage.getItem("loginName");
     if(loginName != null) {//说明之前存储过值,说明用户希望记住用户名
         //将值赋给用户名输入框
         $("#login-name").val(localStorage.getItem("loginName"));
     } else {
         document.getElementById('login-name').focus();
     }
});

function btn_login() {
    //referrer属性简单来说就是上一个页面的URL
    var prevLink = document.referrer;
    /*判断用户是否选择记住用户名*/
    var rememberme=document.getElementById('rememberme');
    $('#btn-login').button('loading');
    var name = $("#login-name").val();
    var pwd = $("#login-pwd").val();
    if (name == "" || pwd == "") {
        showMsg("请输入完整信息!", "info", 2000);
        $('#btn-login').button('reset');
    } else {
        $.ajax({
            type: 'POST',
            url: '/admin/getLogin',
            async: false,
            dataType: "json",
            data: {
                'username': name,
                'password': pwd
            },
            success: function (data) {
                if(rememberme.checked==true){
                    /*存储数据到localstorage*/
                    localStorage.setItem('loginName', $("#login-name").val());
                }
                if (data.code == 1) {
                    $.toast({
                        text: data.msg,
                        heading: '成功',
                        icon: 'success',
                        showHideTransition: 'fade',
                        allowToastClose: true,
                        hideAfter: 1500,
                        stack: 1,
                        position: 'top-center',
                        textAlign: 'left',
                        loader: true,
                        loaderBg: '#ffffff',
                        afterHidden: function () {
                            if ($.trim(prevLink) == '') {
                                window.location.href = '/admin';
                            } else {
                                window.location.href = prevLink;
                            }
                        }
                    });
                } else {
                    $('.login-body').addClass('animate shake');
                    $.toast({
                        text: data.msg,
                        heading: '错误',
                        icon: 'error',
                        showHideTransition: 'fade',
                        allowToastClose: true,
                        hideAfter: 2000,
                        stack: 1,
                        position: 'top-center',
                        textAlign: 'left',
                        loader: true,
                        loaderBg: '#ffffff',
                        afterHidden: function () {
                            $('.login-body').removeClass('animate shake');
                        }
                    });
                    $('#btn-login').button('reset');
                }
            }
        });
    }
}

 

相关标签: html5 web存储