javascript cookie
Posted slgkaifa
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript cookie相关的知识,希望对你有一定的参考价值。
一、什么是 cookie?
cookie 就是页面用来保存信息,比方自己主动登录、记住username等等。
二、cookie 的特点
- 同个站点中全部的页面共享一套 cookie
- cookie 有数量、限制大小
- cookie 有过期时间
三、怎样使用 cookie?
通过 document.cookie 来写入 cookie
<!DOCTYPE html> <html lang="en-US"> <head> <meta charset="UTF-8"> <title>cookie基础</title> </head> <body> </body> </html> <script type="text/javascript"> document.cookie = \'username=abc\'; document.cookie = \'password=123\'; document.cookie = \'email=abcdef@123.com\'; </script>
打开浏览器查看 cookie,能够发现新定义的 cookie 并不会将原来的覆盖。
假设没有设置过期时间,那么关闭浏览器就会清空 cookie。
怎样设置过期时间呢?答案是:expires。一般我们会结合 Date 对象来使用。
var d = new Date(); d.setTime(d.getTime() + 1 * 3600 * 1000); document.cookie = \'username=abc; expires=\' + d.toGMTString();
我们能够通过火狐浏览器看到,username 的过期时间是当前时间的 1 小时后。
最后对获取 cookie 的方法进行封装:
function setCookie(name,value,hours){ var d = new Date(); d.setTime(d.getTime() + hours * 3600 * 1000); document.cookie = name + \'=\' + value + \'; expires=\' + d.toGMTString(); }
学会了怎样设置 cookie,那么该怎样读取 cookie 呢?
首先我们看下 cookie 里的内容是什么类型?
document.cookie = \'username=abc\'; document.cookie = \'password=123\'; document.cookie = \'email=abcdef@123.com\'; typeof document.cookie; //string alert(document.cookie); //\'username=abc; password=123; email=abcdef@123.com\'
得到的是一串字符串。须要注意的是。每一个 ; 后面都有个空格。
那么我们怎样取到详细的数值呢?附上代码:
function getCookie(name){ var arr = document.cookie.split(\'; \'); for(var i = 0; i < arr.length; i++){ var temp = arr[i].split(\'=\'); if(temp[0] == name){ return temp[1]; } } return \'\'; }
除了设置、获取 cookie,我们还能够删除 cookie。我们在网上常常看到有清除username这种功能。事实上就是用到了清除 cookie。
清除 cookie 事实上非常easy,仅仅要使过期时间为过去时间就能够了。
function removeCookie(name){ var d = new Date(); d.setTime(d.getTime() - 10000); document.cookie = name + \'=1; expires=\' + d.toGMTString(); }
最后我们将设置、获取、清除 cookie 封装成一个 cookie.js
function setCookie(name,value,hours){ var d = new Date(); d.setTime(d.getTime() + hours * 3600 * 1000); document.cookie = name + \'=\' + value + \'; expires=\' + d.toGMTString(); } function getCookie(name){ var arr = document.cookie.split(\'; \'); for(var i = 0; i < arr.length; i++){ var temp = arr[i].split(\'=\'); if(temp[0] == name){ return temp[1]; } } return \'\'; } function removeCookie(name){ var d = new Date(); d.setTime(d.getTime() - 10000); document.cookie = name + \'=1; expires=\' + d.toGMTString(); }
jquery.cookie.js 是一款轻量级的 cookie 插件,能够读取,写入和删除 cookie。
本文主要针对 jquery.cookie.js 的使用方法进行具体的介绍。
用法:
设置 cookie:
$.cookie(\'the_cookie\', \'the_value\');
注:假设 $.cookie 没有第三个參数。那么当浏览器关闭时,该 cookie 将会自己主动删除。
设置一个有效期为 7 天的 cookie:
$.cookie(\'the_cookie\', \'the_value\', {expires: 7});
注:$.cookie 第三个參数是一个对象,除了能够设置有效期(expires: 7)。还能够设置有效路径(path: \'/\')、有效域(domain: \'jquery.com\')及安全性(secure: true)。
读取 cookie:
$.cookie(\'the_cookie\');
注:假设没有该 cookie,返回 null。
删除 cookie:
$.cookie(\'the_cookie\', null);
我们仅仅须要给须要删除的 cookie 设置为 null。就能够删除该 cookie。
最后附上源码:
/** * Cookie plugin * * Copyright (c) 2006 Klaus Hartl (stilbuero.de) * Dual licensed under the MIT and GPL licenses: * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl.html * */ /** * Create a cookie with the given name and value and other optional parameters. * * @example $.cookie(\'the_cookie\', \'the_value\'); * @desc Set the value of a cookie. * @example $.cookie(\'the_cookie\', \'the_value\', { expires: 7, path: \'/\', domain: \'jquery.com\', secure: true }); * @desc Create a cookie with all available options. * @example $.cookie(\'the_cookie\', \'the_value\'); * @desc Create a session cookie. * @example $.cookie(\'the_cookie\', null); * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain * used when the cookie was set. * * @param String name The name of the cookie. * @param String value The value of the cookie. * @param Object options An object literal containing key/value pairs to provide optional cookie attributes. * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object. * If a negative value is specified (e.g. a date in the past), the cookie will be deleted. * If set to null or omitted, the cookie will be a session cookie and will not be retained * when the the browser exits. * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie). * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie). * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will * require a secure protocol (like HTTPS). * @type undefined * * @name $.cookie * @cat Plugins/Cookie * @author Klaus Hartl/klaus.hartl@stilbuero.de */ /** * Get the value of a cookie with the given name. * * @example $.cookie(\'the_cookie\'); * @desc Get the value of a cookie. * * @param String name The name of the cookie. * @return The value of the cookie. * @type String * * @name $.cookie * @cat Plugins/Cookie * @author Klaus Hartl/klaus.hartl@stilbuero.de */ jQuery.cookie = function(name, value, options) { if (typeof value != \'undefined\') { // name and value given, set cookie options = options || {}; if (value === null) { value = \'\'; options = $.extend({}, options); // clone object since it\'s unexpected behavior if the expired property were changed options.expires = -1; } var expires = \'\'; if (options.expires && (typeof options.expires == \'number\' || options.expires.toUTCString)) { var date; if (typeof options.expires == \'number\') { date = new Date(); date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000)); } else { date = options.expires; } expires = \'; expires=\' + date.toUTCString(); // use expires attribute, max-age is not supported by IE } // NOTE Needed to parenthesize options.path and options.domain // in the following expressions, otherwise they evaluate to undefined // in the packed version for some reason... var path = options.path ? \'; path=\' + (options.path) : \'\'; var domain = options.domain ?\'; domain=\' + (options.domain) : \'\'; var secure = options.secure ? \'; secure\' : \'\'; document.cookie = [name, \'=\', encodeURIComponent(value), expires, path, domain, secure].join(\'\'); } else { // only name given, get cookie var cookieValue = null; if (document.cookie && document.cookie != \'\') { var cookies = document.cookie.split(\';\'); for (var i = 0; i < cookies.length; i++) { var cookie = jQuery.trim(cookies[i]); // Does this cookie string begin with the name we want? if (cookie.substring(0, name.length + 1) == (name + \'=\')) { cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); break; } } } return cookieValue; } };
cookie 的应用——记住username
以下我们通过一个实例来应用cookie.js。
最常见的就是记住username,当用户登录过一次后,通过 cookie 记录下该用户的账号和password,这样下次打开页面的时候不用再次输入账号password了。附上代码:
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8"> <title>cookie的应用——记住用户名</title> </head> <body> <form action="#" id="myform"> <label for="username">用户名:</label><input type="text" name="username" id="username" /> <label for="userpass">密码:</label><input type="password" name="userpass" id="userpass" /> <input type="submit" value="登录" /> <a href="javascript:;">清除记录</a> </form> </body> </html> <script type="text/javascript" src="cookie.js"></script> <script type="text/javascript"> window.onload = function(){ var oForm = document.getElementById(\'myform\'); var oTxt1 = document.getElementById(\'username\'); var oTxt2 = document.getElementById(\'userpass\'); var oClear = document.getElementsByTagName(\'a\')[0]; oTxt1.value = getCookie(\'username\'); oTxt2.value = getCookie(\'userpass\'); oForm.onsubmit = function(){ setCookie(\'username\',oTxt1.value,30); setCookie(\'userpass\',oTxt2.value,30); } oClear.onclick = function(){ removeCookie(\'username\'); removeCookie(\'userpass\'); oTxt1.value = \'\'; oTxt2.value = \'\'; } } </script>
以上是关于javascript cookie的主要内容,如果未能解决你的问题,请参考以下文章
C#-WebForm-★内置对象简介★Request-获取请求对象Response相应请求对象Session全局变量(私有)Cookie全局变量(私有)Application全局公共变量Vi(代码片段
VSCode自定义代码片段12——JavaScript的Promise对象