Javascript读写cookie的实例源码


Posted in Javascript onMarch 16, 2019

今天把javascript如何用来创建及存储cookie复习了一下,其中的一点体会拿出来和大家讨论,首先看一下基础知识:

什么是cookie

cookie 是存储于访问者的计算机中的变量。每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie。你可以使用 JavaScript 来创建和取回 cookie 的值。

cookie的例子

名字 cookie: 当访问者首次访问页面时,他或她也许会填写他/她们的名字。名字会存储于 cookie 中。当访问者再次访问网站时,他们会收到类似 "Welcome John Doe!" 的欢迎词。而名字则是从 cookie 中取回的。

密码 cookie: 当访问者首次访问页面时,他或她也许会填写他/她们的密码。密码也可被存储于 cookie 中。当他们再次访问网站时,密码就会从 cookie 中取回。

日期 cookie: 当访问者首次访问你的网站时,当前的日期可存储于 cookie 中。当他们再次访问网站时,他们会收到类似这样的一条消息:"Your last visit was on Tuesday August 11, 2005!"。日期也是从 cookie 中取回的。

下面来创建一个cookie的实例,如何来创建cookie及取出cookie。

javascript部分代码:

//创建cookie
function setCookie(name, value, expireday) {
 var exp = new Date();
 exp.setTime(exp.getTime() + expireday*24*60*60*1000); //设置cookie的期限
 document.cookie = name+"="+escape(value)+"; expires"+"="+exp.toGMTString();//创建cookie
}
//提取cookie中的值
function getCookie(name) {
 var cookieStr = document.cookie;
 if(cookieStr.length > 0) {
 var cookieArr = cookieStr.split(";"); //将cookie信息转换成数组
 for (var i=0; i<cookieArr.length; i++) {
  var cookieVal = cookieArr[i].split("="); //将每一组cookie(cookie名和值)也转换成数组
  if(cookieVal[0] == name) {
  return unescape(cookieVal[1]); //返回需要提取的cookie值
  }
 }
 }
}
//测试cookie
function checkCookie() {
 var cookieUser = document.getElementById("cookieUser");
 var userName = getCookie("userName");
 if(userName) {
 cookieUser.innerHTML = "您好"+userName+",欢迎再次回来!"; 
 } else {
 var value = prompt("请输入用户名", "");
 if(value) {
  setCookie('userName', value, 1);
 } else {
  alert("请输入用户名!");
 }
 }
}

主要在于如何提取我们需要的cookie信息,在本例的getCookie函数中主要是将cookie信息转化成数组的方式来查找我们需要提取的cookie值。还可以通过正则表达式的方式来匹配,如下:

function getCookie(name) {
 var cookieStr = document.cookie;
 var cookieArr = cookieStr.match(new RegExp(name+"=[a-zA-Z0-9]*;$"));
 var cookieVal = cookieArr.split("=");
 if(cookieVal[0] == name) {
 return unescape(cookieVal[1]);
 }
}

比如在这个例子中,如果打开浏览器中没有存储名为userName的cookie,则会提示用户输入用户名,再次刷新页面时则会显示输入的cookie值。 最后我们可以测试一下代码:

<body onload="checkCookie()">
<p id="cookieUser"></p>
</body>

用JavaScript可以将信息保存在Cookie中,在别的页面可以使用,这样也很方便实用,代码量也不多。不过需要注意的是有些浏览器不支持本地Cookie读写操作,需要在线才能读取,也就是把网站发布之后才允许。例如chrome浏览器。

代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
   <title>Cookie的读取例子</title>
   <link href="CSS/sheet.css" rel="external nofollow" rel="stylesheet" type="text/css">
<script language="javascript">
function writeCookie(){//写入cookie
 document.cookie=encodeURI("username="+document.form1.username.value);
 document.cookie=encodeURI("password="+document.form1.password1.value);
}
function readCookie(){//读取cookie
 var cookieString=decodeURI(document.cookie);//调用decodeURI函数获取Cookie
 if(cookieString.length!=0){//cookie不为空
  var cookies=cookieString.split(";");//使用字符串的split函数利用“;“分割字符串为数组,这样就把username和password分开了
  for(var i=0;i<cookies.length;i++){
   var cookieN=cookies[i].split("=");//使用字符串的split函数利用“=“分割字符串为数组,这样就把username和username的值分开了
   var cookieName=cookieN[0];//
   var cookieValue=cookieN[1];
   alert("Cookie名称为:"+cookieName+" ,值为:"+cookieValue);
 }
}else
alert("Cookie为空,请填写信息");
}
</script>
</head>
<body onload="makesnake()">
 <form action="" method="post" name="form1">
  <table >
   <tr align="right"><td>用户名:</td><td><input type="text" name="username" /></td></tr>
   <tr align="right"><td>密码:</td><td><input type="password" name="password1" /></td></tr>
   <tr align="right"><td>确认密码:</td><td><input type="password" name="password2" /></td></tr>
   <tr align="center">
    <td ><input type="button" value="写入Cookies" onClick="writeCookie();"></td>
    <td><input type="button" value="读取Cookies" onClick="readCookie();"></td></tr>
   </table>
  </form>
 </body>
</html>

在Chrome运行效果:

(填写好后点击写入再点击读取)

Javascript读写cookie的实例源码

Javascript读写cookie的实例源码

注:在IE、火狐等浏览器可以直接打开html读取Cookie操作,但在Chrome需要发布之后在线才行。即在浏览器输入ip打开。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Javascript 相关文章推荐
使用原生javascript创建通用表单验证——更锋利的使用dom对象
Sep 13 Javascript
js获取IP和PcName(IE)在vs中可用
Aug 02 Javascript
javascript数组去重方法终极总结
Jun 05 Javascript
控制文字内容的显示与隐藏示例
Jun 11 Javascript
gridview生成时如何去掉style属性中的border-collapse
Sep 30 Javascript
js仿土豆网带缩略图的焦点图片切换效果实现方法
Feb 23 Javascript
JS 实现随机验证码功能
Feb 15 Javascript
原生js实现可拖拽效果
Feb 28 Javascript
浅谈Vue-cli 命令行工具分析
Nov 22 Javascript
微信小程序解除10个请求并发限制
Dec 18 Javascript
vue中使用mxgraph的方法实例代码详解
May 17 Javascript
Vue3.0 手写放大镜效果
Jul 25 Vue.js
vue自定义键盘信息、监听数据变化的方法示例【基于vm.$watch】
Mar 16 #Javascript
vue自定义指令用法经典实例小结
Mar 16 #Javascript
简单易扩展可控性强的Jquery转盘抽奖程序
Mar 16 #jQuery
基于vue通用表单解决方案的思考与分析
Mar 16 #Javascript
vue+php实现的微博留言功能示例
Mar 16 #Javascript
一些你可能不熟悉的JS知识点总结
Mar 15 #Javascript
使用element-ui table expand展开行实现手风琴效果
Mar 15 #Javascript
You might like
php类
2006/11/27 PHP
比较discuz和ecshop的截取字符串函数php版
2012/09/03 PHP
php的一个简单加密解密代码
2014/01/14 PHP
ThinkPHP中的create方法与自动令牌验证实例教程
2014/08/22 PHP
laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例
2020/01/25 PHP
JQuery 学习笔记 选择器之六
2009/07/23 Javascript
js类的静态属性和实例属性的理解
2009/10/01 Javascript
javascript 用原型继承来实现对象系统
2010/03/22 Javascript
StringTemplate遇见jQuery冲突的解决方法
2011/09/22 Javascript
基于jquery的DIV随滚动条滚动而滚动的代码
2012/07/20 Javascript
Js数组的操作push,pop,shift,unshift等方法详细介绍
2012/12/28 Javascript
js判断url是否有效的两种方法
2014/03/04 Javascript
JavaScript中的Math.sin()方法使用详解
2015/06/15 Javascript
JS实现先显示大图后自动收起显示小图的广告代码
2015/09/04 Javascript
jQuery实现拖拽可编辑模块功能代码
2017/01/12 Javascript
JavaScript实现动态添加Form表单元素的方法示例
2017/08/14 Javascript
在layui框架中select下拉框监听更改事件的例子
2019/09/20 Javascript
关于vue属性使用和不使用冒号的区别说明
2020/10/22 Javascript
python调用shell的方法
2013/11/20 Python
Python复制文件操作实例详解
2015/11/10 Python
Python实现数据可视化看如何监控你的爬虫状态【推荐】
2018/08/10 Python
浅析python中numpy包中的argsort函数的使用
2018/08/30 Python
使用python 打开文件并做匹配处理的实例
2019/01/02 Python
详解python tkinter包获取本地绝对路径(以获取图片并展示)
2020/09/04 Python
全球最大的网上自行车商店:Chain Reaction Cycles
2016/12/02 全球购物
Maxpeedingrods美国:高性能汽车零件
2020/02/14 全球购物
社区端午节活动方案
2014/01/28 职场文书
建筑安全员岗位职责
2014/03/13 职场文书
满月酒主持词
2014/03/27 职场文书
商品陈列协议书
2014/09/29 职场文书
医院护士工作检讨书
2014/10/26 职场文书
2014年组织委员工作总结
2014/12/01 职场文书
2014年妇女工作总结
2014/12/06 职场文书
离婚协议书的范本
2015/01/27 职场文书
2015年音乐教师个人工作总结
2015/05/20 职场文书
【海涛DOTA】D-cup邀请赛NV.cn vs DT.Love
2022/04/01 DOTA