cookie本身没什么可介绍的,但是cookie在JavaScript中,有很多需要注意的

  首先,cookie在JavaScript中,是window.document对象的一个属性,所以访问cookie是通过document.cookie这种形式。

设置cookie值

  最直接的方式是下面这样:

<!--- demo.html -->

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<input type="button" value="跳转" id="btn">
</body>
<script>
document.cookie = "name=abc";
document.cookie = "age=20"; var btn = document.getElementById("btn");
btn.onclick= function(){
window.open("index.php","_blank");
}
</script>
</html>

  

查看cookie

  方式1,使用PHP的超全局数组来读取,注意运行的另外一个文件了,不是保存cookie的那个文件:

/*  index.php */

<?php
print_r($_COOKIE);
?>

  方式二:使用document.cookie来set值,那么仍旧可以使用document.cookie来get值,不过仍旧不是保存cookie的那个文件。

<!-- index.php  -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>打印cookie</title>
</head>
<body></body>
<script>
alert(document.cookie);
</script>
</html>

  上面两个查看cookie的代码都保存在另外一个文件中(index.php),而不是保存cookie的demo.html,这是因为在demo.html中无论怎么设置,无论刷新多少次,都不会出现cookie值,这是因为cookie的特性。

  简而言之:在页面中设置cookie的那一次,是读不到cookie的,因为本次设置的cookie要下次才能生效,而不断地刷新,cookie就不断地重新保存,于是就始终取不到cookie的值。同时cookie是有作用范围的,也就是不能访问不同域的cookie,通常只能访问本域的cookie,所以可以在同一个域中范文设置的cookie,即在一个程序(demo.html)中设置,在另外一个程序中(index.php)中获取,demo.html和index.php都在同一个域下(localhost)。

  

  下面是使用PHP的全局数组打印出的cookie内容如下:

Array
(
[name] => abc
[age] => 20
)

  

  下面是使用打印document.cookie的信息,如下:

name=abc; age=20

  

  可以看到,虽然在demo.html中,对document.cookie赋了两次值,一次是name=abc,一次是age=20,但是在这里,第二次赋值并没有覆盖掉第一次赋的值,反而两个都保存了,而且使用document.cookie的形式是以字符串保存,不同的项用分号加空格来分隔,但是我们在设置多项的cookie的时候,可以使用一下形式,中间直接用分号分隔,但最好使用cookie。

document.cookie = "name=abc; age=20"

  

设置过期时间

  设置cookie的过期时间,和php差不多,都是当前时间加上过期时间,即在那个时间点。有点不同的是,php中过期时间的单位是秒,格式如下:

//php中的用法
setcookie("attr", $value, time()+3600); /* 1 小时过期 */

  但是JavaScript更加方便一点,可以直接设置几天过期,几年过期

<script>
var date = new Date(); //date.setFullYear(date.getFullYear() + 1);//一年后过期
//date.setMonth(date.getMonth() + 1 + 2);//2个月后过期,注意多加一个1
//date.setDate(date.getDate() + 1);//一天后
date.setSeconds(date.getSeconds() + 30);//30s后过期 document.cookie = "name=abc;expires=" + date;
document.cookie = "age=20"; var btn = document.getElementById("btn");
btn.onclick= function(){
window.open("test.html","_blank");
}
</script>

  

  需要注意的是,上面这些setDate,setMonth,setFullYear不能叠加,只能设置一项,因为使用php习惯了,随意推荐使用秒作单位。

  还有一个要注意:如果使用简短方式设置cookie和过期时间,如下

document.cookie = "name=abc; expires=" + (过期时间1)"; "age=20; expires=" + 过期时间

  上面这一行代码保存了两个cookie信息,有两个expires,每一个expire是前面一个cookie项的过期时间,而不是后面cookie项的过期时间。

  在获取cookie的时候,利用document.cookie不会获取到expires。

封装

  可以将上面设置cookie的过程一下,可以封装成一个json格式的类,有添加cookie,获取cookie,删除cookie的功能。

<script>
cookie = {
setCookie : function (key, value,expireSeconds){
var date = new Date();
date.setSeconds(date.getSeconds() + expireSeconds);
document.cookie = key + "=" + value + "; expires=" + date;
},
getCookie : function (key){
var items = document.cookie.split("; ");//千万注意是以分号加空格来分割
for(var i = 0; i < items.length; i++){
item = items[i].split("=");
if(item[0] == key){
return item[1];
}
}
},
removeCookie : function(key){
this.setCookie(key,"",-1);
}
}
cookie.setCookie("name","JavaScript",300);//300s过期
cookie.setCookie("age","30",300);
alert(cookie.getCookie("name"));//JavaScript
alert(cookie.getCookie("age"));//30 cookie.removeCookie("age");
alert(cookie.getCookie("age"));//空
</script>

  

  

  

JavaScript中的cookie的更多相关文章

  1. Javascript中关于cookie的那些事儿

    Javascript-cookie 什么是cookie? 指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密).简单点来说就是:浏览器缓存. cookie由什 ...

  2. JavaScript中的Cookie 和 Json的使用

    JavaScript中的Cookie 和 Json的使用 JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.采用的是完全独立于编程语言的文本格式来存 ...

  3. javascript中的cookie,以及事件解析

    Cookie: 它的意思是在本地的客户端的磁盘上以很小的文件形式保存数据,Cookie的处理原则上需要在服务器环境下运行,目前Chrome不可以在客户端操作Cookie,其他浏览器均可以,   Coo ...

  4. JavaScript中document.cookie

    “某些 Web 站点在您的硬盘上用很小的文本文件存储了一些信息,这些文件就称为 Cookie.”—— MSIE 帮助.一般来说,Cookies 是 CGI 或类似,比 HTML 高级的文件.程序等创建 ...

  5. JavaScript中设置cookie的值

    cookie 与 session 是网页开发中常用的信息存储方式.Cookie是在客户端开辟的一块可存储用户信息的地方:Session是在服务器内存中开辟的一块存储用户信息的地方.JavaScript ...

  6. 浅谈JavaScript中的cookie

    什么是cookie?简单来说,cookie就是网站服务器存放在我们计算机上的一小段(一般大小不超过4KB)用来识别和记录用户的个人信息的文本.HTTP协议是一种没有“状态”的传输协议,也就是说,服务器 ...

  7. 1、JavaScript中的Cookie 用于存储 web 页面的用户信息。

    总结:每个浏览器都有一定数量限制的cookie.每个浏览器中,每一个cookie都有一个path路径,指向请求访问的网页. -------------------------------------- ...

  8. javascript中的 cookie对象

    Cookie 对象 是一种以文件(Cookie文件)的形式保存在客户端硬盘的Cookies文件夹中的数据信息(Cookie数据).Cookie文件夹中的用户数据信息(Cookie数据).Cookie文 ...

  9. Javascript中的Cookie操作

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

随机推荐

  1. linux之基本命令进阶

    一  配置yum源管理与软件管理  yum常见工具 tree telent sl  cowsay yum install tree #安装tree命令,以树形目录显示 #由于每次安装都有确认的提示,取 ...

  2. 项目Alpha冲刺 5

    作业描述 课程: 软件工程1916|W(福州大学) 作业要求: 项目Alpha冲刺(团队) 团队名称: 火鸡堂 作业目标: 介绍第五天冲刺的项目进展.问题困难和心得体会 1.团队信息 队名:火鸡堂 队 ...

  3. mysql 创建 mb4 字符集数据库

    create database sina default character set utf8mb4 collate utf8mb4_unicode_ci; show variables like ' ...

  4. day16 Python 内置函数 大体演示想看就看,会用就行

    1.abs() 获取绝对值 a = -10 print(a.__abs__()) 结果: 10 2.all()  接收一个迭代器,如果跌电气的所有元素都为真,那么返回True,否则返回False tm ...

  5. node.js如何将远程的文件下载到本地、解压、读取

    其实要解决的问题,很简单,获取远程文件,然后解压到本地读取. 在vscode中通过node.js来实现是比较方便的,相比之前的zip.js,我觉得我还是比较喜欢node.js实现方式. test.js ...

  6. LINUX 手动建立SWAP文件及删除

    原文:http://blog.itpub.net/7728585/viewspace-670175/ 1. 确定swap文件的大小,单位为M.将该值乘以1024得到块大小.例如,64MB的swap文件 ...

  7. 浅淡个人学习嵌入式Linux过程

    我专业是电子信息工程,在初入大学的时候,我们的班主任便要我们多多去了解一些关于电子方面的知识.后来我了解到了嵌入式,继而了解到了嵌入式Linux.其实我们学习linux差不多就学习linux内核,但是 ...

  8. 【NOIP2017 D1T3】逛公园

    NOIP2017 D1T3 逛公园 题意:给一个有向图,每条边有权值,问从\(1\)到\(N\)的长度不超过最短路长度\(+K\)的路径条数.如果有无数条则输出\(-1\). 思路:我们首先扔掉\(- ...

  9. Android Studio中依赖第三库导致support版本冲突解决方案

    1.今天在Android Studio的app/gradle文件中依赖文件选择器的第三方库:“com.leon:lfilepickerlibrary:1.8.0” 时,github地址:https:/ ...

  10. Luogu P1962 斐波那契数列(矩阵乘法模板)

    传送门(其实就是求斐波那契数列....) 累了 明天再解释 做这道题需要一些关于矩阵乘法的基础知识. 1. 矩阵乘法的基础运算 只有当矩阵A的列数等于矩阵B的行数时,A与B可以相乘(A的行数不一定等于 ...