zoukankan      html  css  js  c++  java
  • javaScript存储

    《1》
      1.document对象提供了的cookie
      2.Window对象提供了sessionStorage和localStorage两个存储对象来对网页的数据进行添加、删除、修改、查询操作。
      console.log(typeof(Storage) !== "undefined") //检测浏览器是否支持Storage存储
     
    《2》三种数据存储方式,分别是:
      1.cookie
        a.主流浏览器都支持
        b.存储于访问者的计算机中的变量;
        c.每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie
        d.注意测试需要在浏览器中服务请求才起作用,直接浏览器打开静态文件不起作用

      2.sessionStorage
        《IE8以上》 《会话存储》 用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据

      3.localStorage
        《IE8以上》 《本地存储》 用于《长久保存整个网站》的数据,保存的数据《没有过期时间》,直到手动去除
     
    《3》简单例子理解
      1.cookie
        设置cookie的形式:"cookieName1=cookie1^cookieName2=cookie2;expires=" + date
        cookie有一个关键字是expires,它是用来设置cookie的有效期的,默认情况(不设置expires)是当浏览器关闭的时候,自动清除cookie。
        注意设置多个cookie不要用“;”隔开,用 “^” 如上

        删除cookie
          把cookie的expires设置到过去(1970年1月1号) cookie就过期了
     
        修改cookie
          如document.cookie = "password=123;expires=" + date.toGMTString();
          再次请求遇到已经定义过的cookie(username),浏览器会自己修改原来储存的值;如果没有定义过,浏览器则会创建一个新的cookie。

        
    <html>
        <head>
        <script type="text/javascript">
            //检查是否已设置 cookie
            function getCookie(c_name){
                //document.cookie 对象存有某些 cookie
                if (document.cookie.length>0)
                {
                    c_start=document.cookie.indexOf(c_name + "=")
                    //检查指定的 cookie 是否已储存
                    if (c_start!=-1)
                        { 
                            c_start=c_start + c_name.length+1 
                            c_end=document.cookie.indexOf(";",c_start)
                            if (c_end==-1) c_end=document.cookie.length
                                return unescape(document.cookie.substring(c_start,c_end))
                        } 
                    }
                return ""
            }
    
            //创建一个可在 cookie 变量中存储访问者姓名的函数(cookie 的名称、值以及过期天数)
            function setCookie(c_name,value,expiredays){
                var exdate=new Date()
                exdate.setDate(exdate.getDate()+expiredays)
                document.cookie=c_name + "=" + escape(value) + ((expiredays==null) ? "" : ";expires="+exdate.toGMTString())
            }
    
            //如果 cookie 已设置,则显示欢迎词,否则显示提示框来要求用户输入名字。
            function checkCookie()
            {
                username=getCookie('username')
                if (username!=null && username!=""){
                    alert('Welcome again '+username+'!')
                }else {
                    username=prompt('Please enter your name:',"")
                    if (username!=null && username!=""){
                        setCookie('username',username,365)
                    }
                }
            }
        </script>
    
        </head>
        <body onLoad="checkCookie()">
    </body>
    </html>
                        
     
      2.sessionStorage 和 localStorage
        对象属性:
          length : 返回存储对象中包含多少条数据。
     
        对象方法:
          key(n)   返回存储对象中第 n 个键的名称
          getItem(keyname)     返回指定键的值
          setItem(keyname, value)  添加键和值,如果对应的值存在,则更新该键对应的值。
          removeItem(keyname)  移除键
          clear()  清除存储对象中所有的键

          例子:
            localStorage.setItem("a",JSON.stringify({name:"xusanduo",token:"abcd123"}));
            var local = localStorage.getItem("a");
            console.log(JSON.parse(local))

            sessionStorage.setItem("session","sessionXusanduo")
            console.log(sessionStorage)
     
     
    《4》联系与区别:
      相同点:都保存在浏览器端,同源的

      不同点:
        1.传递方式不同
          cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递。
     
          sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。

        2.数据大小不同
          cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下。
          存储大小限制也不同,cookie数据不能超过4k,同时因为每次http请求都会携带cookie,所以cookie只适合保存很小的数据,如会话标识。
     
          sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。

        3.数据有效期不同
          cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。

          sessionStorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持;
          localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;
     

        4.作用域不同
          cookie也是在所有同源窗口中都是共享的。

          sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;
     
          localStorage 在所有同源窗口中都是共享的;
     
          Web Storage 支持事件通知机制,可以将数据更新的通知发送给监听者。
          Web Storage 的 api 接口使用更方便。
  • 相关阅读:
    while循环&CPU占用率高问题深入分析与解决方案
    Jmeter 发送json
    HTTP请求各参数详解
    Fast Stone截图工具使用教程
    程序员必备神器(FastStoneCapture)
    千古第一败家子杨广(打击异己、毫无承担、无识人之明)
    在路上看和今天要解决的问题可能相关的书,顺便工作上实践一下,立码就记住了
    与Qt的联系方式:邮件,论坛,销售,Bug报告
    Qt for Automation
    Qt for WebAssembly
  • 原文地址:https://www.cnblogs.com/changxue/p/9297469.html
Copyright © 2011-2022 走看看