一, cookie
什么是 Cookie?
"cookie 是存储于访问者的计算机中的变量. 每当同一台计算机通过浏览器请求某个页面时, 就会发送这个 cookie. 你可以使用 JavaScript 来创建和取回 cookie 的值." - w3school
cookie 是访问过的网站创建的文件, 用于存储浏览信息, 例如个人资料信息.
从 JavaScript 的角度看, cookie 就是一些字符串信息. 这些信息存放在客户端的计算机中, 用于客户端计算机与服务器之间传递信息.
在 JavaScript 中可以通过 document.cookie 来读取或设置这些信息. 由于 cookie 多用在客户端和服务端之间进行通信, 所以除了 JavaScript 以外, 服务端的语言 (如 PHP) 也可以存取 cookie.
注: 假如是本地磁盘中的页面, Chrome 的控制台是无法用 JavaScript 读写操作 cookie 的, 解决办法... 换一个浏览器 ^_^.
1. 设置 cookie
在使用 JavaScript 存取 cookie 时, 必须要使用 Document 对象的 cookie 属性; 一行代码介绍如何创建和修改一个 cookie :
如果要一次存储多个名 / 值对, 可以使用分号加空格 (; ) 隔开
document.cookie="userIdsss=666; userNameee=lucas;path=/; domain="www.google.cn; expires=30; secure"; // 同时设置多个 cookie
tip:cookie 中所有属性均标识绿色
以上代码中'usernameee'表示 cookie 名称,'lucas'表示这个名称对应的值. 假设 cookie 名称并不存在, 那么就是创建一个新的 cookie; 如果存在就是修改了这个 cookie 名称对应的值. 如果要多次创建 cookie , 重复使用这个方法即可.
在输入 cookie 时的名或值中不能包含分号 (;), 逗号(,), 等号(=) 以及空格 (需要使用 escape() 函数进行编码), 在获取 cookie 时通过 unescape()函数把值转换回来.
把 cookie 属性设置为 secure(属于 https 协议), 只保证 cookie 与服务器之间的数据传输过程加密, 而保存在本地的 cookie 文件并不加密. 如果想让本地 cookie 也加密, 得自己加密数据.
函数写法:
- function setCookie(c_name, value, expiredays) {
- var exdate = new Date(); // 初始化时间
- exdate.setDate(exdate.getDate() + expiredays); // 设置有效期
- // 路径要填写, 因为 JS 的默认路径是当前页, 如果不填, 此 cookie 只在当前页面生效!
- document.cookie = c_name + "=" + escape(value) + ";path=/"+((expiredays == null) ? "":";expires=" + exdate.toUTCString()); // 如果给 exiredays 赋值则标签关闭清除 cookie
- }
2. 获取 cookie
简易写法:
document.write(document.cookie)
函数写法:
- function getCookie(name){
- var strcookie = document.cookie;// 获取 cookie 字符串
- var arrcookie = strcookie.split(";");// 分割
- // 遍历匹配
- for ( var i = 0; i < arrcookie.length; i++) {
- var arr = arrcookie[i].split("=");
- if (arr[0] == name){
- return unescape(arr[1]);
- }
- }
- return "";
- }
3. 删除某 cookie
删除一个 cookie, 可以将其过期时间设定为一个过去的时间或者当前时间, 例如:
- function clearCookie(name) {
- setCookie(name, "", -1); // 此函数借鉴上面 1. 设置 cookie
- }
cookie 有两种清除方式:
通过浏览器工具清除 cookie (有第三方的工具, 浏览器自身也有这种功能)
通过设置 cookie 的有效期来清除 cookie
注: 删除 cookie 有时可能导致某些网页无法正常运行
4. 检查 cookie
- function checkCookie() {
- var user = getCookie("username");
- if (user != "") {
- alert("Welcome again" + user);
- } else {
- user = prompt("Please enter your name:", "");
- if (user != "" && user != null) {
- setCookie("username", user, 365);
- }
- }
- }
5. 清除某域名下全部 cookie
- function clearAllCookie() {
- var keys = document.cookie.match(/[^ =;]+(?=\=)/g);
- if(keys) {
- for(var i = keys.length; i--;)
- document.cookie = keys[i] + '=0;expires=' + new Date(0).toUTCString()
- }
- }
待续更新.....
来源: http://www.bubuko.com/infodetail-3086929.html