当前位置: 首页 > news >正文

JS对浏览器Cookie的操作,查询、设置以及删除

JavaScript是运行在客户端的脚本,因此一般是不能够设置Session的,因为Session是运行在服务器端的。

而cookie是运行在客户端的,所以可以用JS来设置cookie.

假设有这样一种情况,在某个用例流程中,由A页面跳至B页面,若在A页面中采用JS用变量temp保存了某一变量的值,在B页面的时候,同样需要使用JS来引用temp的变量值,对于JS中的全局变量或者静态变量的生命周期是有限的,当发生页面跳转或者页面关闭的时候,这些变量的值会重新载入,即没有达到保存的效果。解决这个问题的最好的方案是采用cookie来保存该变量的值,那么如何来设置和读取cookie呢?

首先需要稍微了解一下cookie的结构,简单地说:cookie是以键值对的形式保存的,即key=value的格式。各个cookie之间一般是以“;”分隔。

假设在A页面中要保存一组变量(usr=>"jack",pwd=>"123")到cookie中,则相应的JS代码为:

document.cookie="usr=" + username;

如果要在B页面中获取变量usr的值,则相应的JS代码为:

var username = document.cookie.split(";")[0].split("=")[1];

 

下面的代码为完整的设置、获取、以及清除cookie。对于如何在浏览器关闭的时候自动清除cookie,其实很简单,那就是在设置cookie时不设置过期时间即可!

 1 /**
 2  * 获取指定cookie键的值
 3  * @param key 指定要获取的cookie键
 4 */
 5 function getCookie(key) {
 6   var arr,reg=new RegExp("(^| )"+key+"=([^;]*)(;|$)");
 7   if(arr=document.cookie.match(reg)) {
 8     return unescape(arr[2]);
 9   }
10   else {
11     return null;
12   }
13 }
14 
15 /**
16  * 设置浏览器Cookie,默认不设置过期时间,浏览器关闭时清除
17  * @param key cookie键
18  * @param value cookie值
19  * @param expires cookie过期时间,默认为0,即不设置过期时间,浏览器关闭时清除
20 */
21 function setCookie(key, value, expires=0) {
22   var cookie = key + "=" + escape(value);
23   if (expires) {
24     var date = new Date();
25     date.setTime(date.getTime()+expires*1000);
26     cookie = cookie + ";expires=" + date.toGMTString();
27   }
28   document.cookie = cookie;
29 }
30 
31 /**
32  * 清除指定cookie键的值
33  * @param key 指定要清除的cookie键
34 **/
35 function delCookie(key) {
36   var date = new Date();
37   date.setTime(date.getTime() - 1000);
38   document.cookie = key + "='';expires=" + date.toGMTString();
39 }

 

转载于:https://www.cnblogs.com/HardCarroll/p/10109861.html

相关文章:

  • phpstorm添加站点
  • columns数组形式展示不同列数据
  • 原生js实现多组图片切换
  • js 合并两个数组对象
  • 看动画轻松理解时间复杂度(二)
  • finance1:专业词汇
  • 周末去面试,进去 5 分钟就出来了…
  • Automatic Login Using sshpass
  • 数据库3
  • oracle数据库日常维护手册
  • Bodymovin:Bodymovin和Lottie:把AE动画转换成HTML5/Android/iOS原生动画
  • veterbi
  • 数算运算符
  • Solaris 11 配置IP地址
  • javaweb数据库编程代码详细讲解
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • Create React App 使用
  • Javascript弹出层-初探
  • javascript数组去重/查找/插入/删除
  • node-glob通配符
  • Python - 闭包Closure
  • V4L2视频输入框架概述
  • 阿里云前端周刊 - 第 26 期
  • 百度地图API标注+时间轴组件
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 学习笔记TF060:图像语音结合,看图说话
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #162 (Div. 2)
  • #NOIP 2014# day.1 T2 联合权值
  • #pragam once 和 #ifndef 预编译头
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (3)STL算法之搜索
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (六)vue-router+UI组件库
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (三)docker:Dockerfile构建容器运行jar包
  • (十五)使用Nexus创建Maven私服
  • (四)鸿鹄云架构一服务注册中心
  • ****Linux下Mysql的安装和配置
  • .net 7 上传文件踩坑
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .net FrameWork简介,数组,枚举
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .net中我喜欢的两种验证码
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @DependsOn:解析 Spring 中的依赖关系之艺术
  • @entity 不限字节长度的类型_一文读懂Redis常见对象类型的底层数据结构
  • [ 英语 ] 马斯克抱水槽“入主”推特总部中那句 Let that sink in 到底是什么梗?
  • [android] 天气app布局练习
  • [Android]一个简单使用Handler做Timer的例子
  • [AutoSar]BSW_Com02 PDU详解
  • [BSGS算法]纯水斐波那契数列