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

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

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

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

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>关于Cookie</title>
<script>
/*
cookie:存储数据,当用户访问了某个网站(网页)的时候,我们就可以通过cookie来像访问者电脑上存储数据;
1、不同的浏览器存放的cookie位置不一样,也是不能通用的;
2、cookie的存储是以域名的方式进行区分的;
3、cookie的数据是可以设置名字的,j.name=Jack
4、一个域名下存放的cookie的个数是有限制的,不同浏览器存放的个数不一样;
5、每个cookie存放的内容大小也是限制的,不同的浏览器存放大小限制不一样;

我们通过document.cookie来获取当前网站下的cookie的时候,得到的是字符串的形式的值,它包含了
当前网站下的所有cookie,它会把所有cookie通过一个分号+空格的形式串联起来。

我们想长时间存放一个cookie,需要在设置这个cookie的时候必须设置一个过期时间;
document.cookie='名称=值;expires='+(字符串格式的)时间;
cookie默认是临时存储,当浏览器关闭进程的时候,自动销毁;

*/

//document.cookie='名字=值';
//document.cookie='name=Jack';
//document.cookie='pwd=123456';

//设置一个过期时间
//var oDate=new Date();
//oDate.setDate(oDate.getDate()+7);//设置为当前时间起算7天后过期
//document.cookie='name=Jack;expires='+oDate.toGMTString();
//alert(typeof oDate);//odate类型是object类型,需要转换为字符串;
//alert(oDate.getDate()); //获取的是当前月份的日号,如5月25,输出的是25

//读取cookie:document.cookie;
//alert(document.cookie);//name=Jack; pwd=123456

//内容最好编码存放,编码--encodeURI(),解码--decodeURI()
//document.cookie='name='+encodeURI('Jack\n您好')+';expires='+oDate.toGMTString();//name=Jack%0A%E6%82%A8%E5%A5%BD; pwd=123456
//alert(decodeURI(document.cookie));//name=Jack 您好; pwd=123456
setCookie("name","Tom",5);
alert( getCookie("name"));
removeCookie("name");
/*
封装
*/

function setCookie(key,value,t)
{
var oDate=new Date();
oDate.setDate(oDate.getDate()+t);
document.cookie=key+"="+value+"; expires="+oDate.toDateString();

}
function getCookie(key){
var arr1=document.cookie.split("; ");//由于cookie是通过一个分号+空格的形式串联起来的,所以这里需要先按分号空格截断,变成[name=Jack,pwd=123456,age=22]数组类型;
for(var i=0;i<arr1.length;i++){
var arr2=arr1[i].split("=");//通过=截断,把name=Jack截断成[name,Jack]数组;
if(arr2[0]==key){
return decodeURI(arr2[1]);
}
}

}
//封装一个移除cookie的函数
function removeCookie(key){
setCookie(key,"",-1);//把cookie设置为过期

}
</script>
</head>

<body>
</body>
</html>

例子:

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>记住cookie效果</title>
<script>
/*
封装*/
window.onload=function(){

var oName=document.getElementById("username");
var oBtn=document.getElementById("btn");
var oDel=document.getElementById("del");

//判断当前cookie是否有值,---即判断getCookie()函数的返回值是否有
if(getCookie("Username")){
oName.value=getCookie("Username");
}else{
oName.value="请输入账户名";
}

oBtn.onclick=function(){
alert("登录成功");
setCookie("Username",oName.value,5);
}

oDel.onclick=function(){
removeCookie("Username");
oName.value="";
}
}

function setCookie(key,value,t)
{ if(t>0){
var oDate=new Date();
oDate.setDate(oDate.getDate()+t);
document.cookie=key+"="+value+"; expires="+oDate.toDateString();
}
}

function getCookie(key){
var arr1=document.cookie.split("; ");//由于cookie是通过一个分号+空格的形式串联起来的,所以这里需要先按分号空格截断,变成[name=Jack,pwd=123456,age=22]数组类型;
for(var i=0;i<arr1.length;i++){
var arr2=arr1[i].split("=");//通过=截断,把name=Jack截断成[name,Jack]数组;
if(arr2[0]==key){
return decodeURI(arr2[1]);
}
}
}

//封装一个移除cookie的函数
function removeCookie(key){
setCookie(key,"",-1);//把cookie设置为过期

}


// removeCookie("name");

</script>
</head>

<body>
<input type="text" id="username">
<input type="button" value="登录" id="btn">
<input type="button" value="清除cookie" id="del">
</body>
</html>

JS 浏览器cookie的设置,读取,删除的更多相关文章

  1. JS读写Cookie(设置、读取、删除)

    JS读写Cookie(设置.读取.删除) Cookie是客户端存放数据的一种方式,可用来做状态保持. 1.设置Cookie: a.无过期时间:(若不设置过期时间,默认为会话级Cookie,浏览器关闭就 ...

  2. js操作cookie(创建、读取、删除)方法总结

    js操作cookie,可以通过开源的插件实现,方便快捷,兼容性好,同样也可以自己写: 此文主要介绍两个常用的插件: Js.cookie.js 和 jQuery.cookie.js 0.Js.cooki ...

  3. js中cookie的添加,删除,查询总结

    function addCookie(objName,objValue,objHours){//添加cookie var str = objName + "=" + escape( ...

  4. js 处理 cookie的存储与删除

    <script> //JS操作cookies方法! //写cookies function setCookie(c_name, value, expiredays){ var exdate ...

  5. uni-app同步缓存值 设置 读取 删除

    A页面 <view class="go-to-tab" @tap="gotologin"> 去login页面 </view> msg : ...

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

    JavaScript是运行在客户端的脚本,因此一般是不能够设置Session的,因为Session是运行在服务器端的. 而cookie是运行在客户端的,所以可以用JS来设置cookie. 假设有这样一 ...

  7. JS封装cookie操作函数实例(设置、读取、删除)

    本文实例讲述了JS封装cookie操作函数.分享给大家供大家参考,具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ...

  8. JS读写浏览器cookie及读取页面参数

    JS读写浏览器cookie及读取页面参数 var zbrowser = { //设置浏览器cookie,exdays是cookie有效时间 setCookie: function (c_name, v ...

  9. js cookie创建读取删除函数封装

    js cookie创建读取删除函数封装 一.总结 都是为了方便操作,这样弄了很方便 1.创建cookie的函数封装的作用:方便设置过期时间expire,方便设置键和值 2.查询cookie的数据封装的 ...

随机推荐

  1. 手机交互应用服务(状态栏提示信息Notifications)

    官方的一个简单的例子: NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this) .setSmallIcon ...

  2. 上传图片转为base64格式预览并压缩图片(不兼容IE9以下浏览器,兼容移动端ios,android)

    前些天公司要求在微信移动端做上传图片并预览的功能,要求能够调用摄像头拍照并立即预览. 在网上搜了一些方法,开始自己写了个简单的功能实现代码.结果发现移动端拍照出来的图片动不动就2M+,又因为要批量上传 ...

  3. Windows下JIRA6.3.6安装、汉化、破解

    一.MySQL建库和建账号 1. mysql中创建数据库jiradb create database jiradb character set 'UTF8'; 2.创建数据库用户并赋于权限 creat ...

  4. Python中字符串拼接的三种方式

    在Python中,我们经常会遇到字符串的拼接问题,在这里我总结了三种字符串的拼接方式:     1.使用加号(+)号进行拼接 加号(+)号拼接是我第一次学习Python常用的方法,我们只需要把我们要加 ...

  5. idea 集成sonarLint

    1.目标 idea集成sonar的代码检查,实现可以在提交代码前就检查你的代码,而不是将代码提交之后,之后再去检查. Sonar可以从以下七个维度检测代码质量,而作为开发人员至少需要处理前5种代码质量 ...

  6. sql中常见日期获取

    获取当前年月日 --获取当前月份 ,GETDATE())) --获取当前月份的下个月 ,GETDATE())) --获取当前月份的上个月 year()获取年 select year(GETDATE() ...

  7. 一个简单的jquery左右列表内容切换应用

    选中左边某个选项点击添加,即可将选中项添加到右边文本框中,点击选中全部即可将全部选项移到右边,移除按钮功能相同. html代码: <div id="main"> < ...

  8. stl_泛型的一些基本

    一.泛型编程的一些基本 : 1.泛型程序设计: 1.1.程序尽可能的通用. 1.2.将算法从数据结构中抽象出来,成为通用. 1.3.模板并不是单纯的函数,不能凭空的生成,是用来产生代码的代码,可以减少 ...

  9. SQLiteServer+SQLiteClient 用于.Net项目的SQLite服务端程序和客户端类库

    SQLite没有官方的支持CS方式调用的方式,因项目需要我自行开发了一个简易的版本. 当前版本支持的方法 SQLiteOpen(fileName):bool SQLiteClose():void SQ ...

  10. DirectFB 之 动画播放初步

    在基于linux的嵌入式仿真平台开发中,终端的美观和可定制是一个重要的问题.单调的"白纸黑字"型表现方式可谓大煞风景.改造linux控制台使之美观可定制地展示开机信息和logo成为 ...