JavaScript之Cookie讲解。
免费少儿编程开课啦,同学们好!今天分享的知识是Cookie,用于存储页面上需要留存的用户信息。经过这么多天的学习,各位同学应该都已经发现了,不管在网页上输入了多少信息,浏览器刷新或关闭就全没了。Cookie就是为了解决这个问题,它会将需要的信息存在Windows系统的固定文件夹中,一般在系统盘的这里也可以通过internet选项进入。
也正因为Cookie是独立保存的,所以浏览器的开关对它就没什么影响了。Cookie是以键值对的方式存在的,就像这样,每当浏览器加载WEB页面时,属于该页的Cookie就会被自动加载。注意,Cookie的操作对于网页编程来说是非常常用的重点之一,请认真听课。Cookie的操作也分为新建、修改、删除、读取四种。
·先说建立Cookie,调用的是document.cookie来完成的。一般来说建立cookie需要3个部分,用英文分号隔开。
→第一部分为cookie名等于cooke值,这部分是必填的。
→第二部分为cookie的自动过期时间,格式为UTC格式。当超过这个时间之后,cookie会自动失效消失。如果不写过期时间,则过期时间为关闭浏览器时自动删除本Cookie。
→第三部分为path,它指定了cookie在本网站中的有效范围,如果不写就是全站有效,效果等同于反斜杠,也就是根目录。如果填写为这样的格式,即代表只在根目录下的temp目录下cookie才有效,其他目录下的程序如果调用则会返回找不到cookie。
但UTC格式的日期对于程序员来说还是太麻烦,特别是英文不太好的同学,而且重复冗余代码太多。所以我建立setCook函数,这个函数有四个参数,分别对应了cooe名、cookie值、exp值为当前时间。
·第二句先使用getTime方法将当前时间转换为从1970年到今天的毫秒数,在这个值的基础上加上ne计算出来的值,ne传递进来的是当前日期之后的多少天后cookie过期。
比如我这里传的是30,那就是希望这个cookie在30天后自动失效,那就用30这个数乘1000得到毫秒,乘60得到分钟再得到小时,最后乘24得到30关后距当前时间总计有多少毫秒,再加上当前时间的毫秒就会得到最终30天后的时间毫秒数。
有了这个值再使用setTlme方法将其赋值给exp变量,而Np的值则用到了三项运算,判断Np是否有值,如果没有就不管它。如果Np有传递进值,则在Np原值的基础上连接上path项完成设置。
·最后使用字符串连接将cookie新建出来,注意这里的toUTCString方法是将计算出来的30天后的时间转换为UTC时间格式,也就是像这一串。
修改也是调用的setCook函数,要改哪个Cookie,你只需要在ns中填上现有Cookie的名字,inuytton0ideo/填写上要修改的值即可。系统会自动将已经存在的cookie操作为修改值,而不是新建一个同名cookie。
这个函数还是有一点问题的,每次修改时都会自动重设过期时间,也许这不是我们想要的效果,你们可以下去自己改一下,加一个变量来做动作判断即可。当是课后练习。
删除cookie只需要将它的过期时间,也就是这个expires设置为当前时间之前即可,系统会自动删除这个cookie。我这里的delCook函数就是利用了这一点,先将它的值清空,再设置过期时间为1970年就过期了,删除也就完成了。
最后是读取cookie的值,我写了clickProc方法,参数Cn为要显示的cookie名,时间有限,我只讲重点,document点cookie可以取出本页所有有效cookie的键值对,像这样,为了方便后面的计算,保存在变量cstr中并手动在其后加上分号,判断cn的值。如果为Al那再判断cstr是否只有分号,也就是cookie里没值。如果没那就输出这句,如果有那就输出全部cookie。
但如果cn是具体的键名,则直接使用indexof进行字符串匹配cn是否存在。如果名为cn的cookie存在,将其值从cstr这个cookie字符串中截取出来。如果不存在,则返回没有这个cookie。
cookie的取值和其他使用索引下标取值不同,它得截取字符串。在实操中还需要考虑到字符长度和特殊字符的因素,后面再说。cookie必须布属在服务端才会生效,直接双击打开是没用的,特此提醒。
今天的分享就到这里,各位同学可以在汇总文档中尝试修改数值来查看不同的效果。所有的案例及相关文档均可向我获取,我们下期见。想学编程点点关注吧。
本文暂时没有评论,来添加一个吧(●'◡'●)