js获取cookie中存储的值?

1、cookie是浏览器提供的一种机制,它将document 对象的cookie属性提供给JavaScript。可以由JavaScript对其进行控制,而并不是JavaScript本身的性质。cookie是存于用户硬盘的一个文件,这个文件通常对应于一个域名,当浏览器再次访问这个域名时,便使这个cookie可用。因此,cookie可以跨越一个域名下的多个网页,但不能跨越多个域名使用。

2、不同的浏览器对cookie的实现也不一样,但其性质是相同的。例如在Windows 2000以及Windows xp中,cookie文件存储于documents and settings\userName\cookie\文件夹下。通常的命名格式为:userName@domain.txt。

3、cookie机制将信息存储于用户硬盘,因此可以作为全局变量,这是它最大的一个优点。它可以用于以下几种场合。

(1)保存用户登录状态。例如将用户id存储于一个cookie内,这样当用户下次访问该页面时就不需要重新登录了,现在很多论坛和社区都提供这样的功能。 cookie还可以设置过期时间,当超过时间期限后,cookie就会自动消失。因此,系统往往可以提示用户保持登录状态的时间:常见选项有一个月、三个 月、一年等。

(2)跟踪用户行为。例如一个天气预报网站,能够根据用户选择的地区显示当地的天气情况。如果每次都需要选择所在地是烦琐的,当利用了 cookie后就会显得很人性化了,系统能够记住上一次访问的地区,当下次再打开该页面时,它就会自动显示上次用户所在地区的天气情况。因为一切都是在后 台完成,所以这样的页面就像为某个用户所定制的一样,使用起来非常方便。

(3)定制页面。如果网站提供了换肤或更换布局的功能,那么可以使用cookie来记录用户的选项,例如:背景色、分辨率等。当用户下次访问时,仍然可以保存上一次访问的界面风格。

(4)创建购物车。正如在前面的例子中使用cookie来记录用户需要购买的商品一样,在结账的时候可以统一提交。例如淘宝网就使用cookie记录了用户曾经浏览过的商品,方便随时进行比较。

4、当然,上述应用仅仅是cookie能完成的部分应用,还有更多的功能需要全局变量。cookie的缺点主要集中于安全性和隐私保护。主要包括以下几种:

(1)cookie可能被禁用。当用户非常注重个人隐私保护时,他很可能禁用浏览器的cookie功能;
(2)cookie是与浏览器相关的。这意味着即使访问的是同一个页面,不同浏览器之间所保存的cookie也是不能互相访问的;
(3)cookie可能被删除。因为每个cookie都是硬盘上的一个文件,因此很有可能被用户删除;
(4)cookie安全性不够高。所有的cookie都是以纯文本的形式记录于文件中,因此如果要保存用户名密码等信息时,最好事先经过加密处理。

5、这个例子中我们要创建一个存储访问者名字的 cookie。当访问者首次访问网站时,他们会被要求填写姓名。名字会存储于 cookie 中。当访问者再次访问网站时,他们就会收到欢迎词。

6、首先,我们会创建一个可在 cookie 变量中存储访问者姓名的函数:

function Setcookie (name, value){ //设置名称为name,值为value的Cookievar expdate = new Date();   //初始化时间expdate.setTime(expdate.getTime() + 30 * 60 * 1000);   //时间document.cookie = name+"="+value+";expires="+expdate.toGMTString()+";path=/";//即document.cookie= name+"="+value+";path=/";   //时间可以不要,但路径(path)必须要填写,因为JS的默认路径是当前页,如果不填,此cookie只在当前页面生效!
}

7、上面这个函数中的参数存有 cookie 的名称、值以及过期天数。在上面的函数中,我们首先将天数转换为有效的日期,然后,我们将 cookie 名称、值及其过期日期存入 document.cookie 对象。之后,我们要创建另一个函数来检查是否已设置 cookie:

function getCookie(c_name){if (document.cookie.length>0){c_start=document.cookie.indexOf(c_name + "=")if (c_start!=-1){ c_start=c_start + c_name.length+1 c_end=document.cookie.indexOf(";",c_start)if (c_end==-1) c_end=document.cookie.lengthreturn unescape(document.cookie.substring(c_start,c_end))} }return ""
}

8、上面的函数首先会检查 document.cookie 对象中是否存有 cookie。假如 document.cookie 对象存有某些 cookie,那么会继续检查我们指定的 cookie 是否已储存。如果找到了我们要的 cookie,就返回值,否则返回空字符串。最后,我们要创建一个函数,这个函数的作用是:如果 cookie 已设置,则显示欢迎词,否则显示提示框来要求用户输入名字。

function checkCookie(){username=getCookie('username')if (username!=null && username!=""){alert('Welcome again '+username+'!')}else {username=prompt('Please enter your name:',"")if (username!=null && username!=""){setCookie('username',username,365)}}
}

9、一个完整实例

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>无标题文档</title>
<script type=”text/javascript”>function getCookie(c_name){if (document.cookie.length>0){c_start=document.cookie.indexOf(c_name + “=”)if (c_start!=-1){c_start=c_start + c_name.length+1c_end=document.cookie.indexOf(“;”,c_start)if (c_end==-1) c_end=document.cookie.lengthreturn unescape(document.cookie.substring(c_start,c_end))}}return “”}function setCookie(c_name,value,expiredays){var exdate=new Date()exdate.setDate(exdate.getDate()+expiredays)document.cookie=c_name+ “=” +escape(value)+((expiredays==null) ? “” : “;expires=”+exdate.toGMTString())}function checkCookie(){username=getCookie(‘username’)if (username!=null && username!=”"){alert(‘Welcome again ‘+username+’!')}else{username=prompt(‘Please enter your name:’,”")if (username!=null && username!=”"){setCookie(‘username’,username,365)}}}
</script>
</head>
<body onLoad=”checkCookie()”></body>
</html>

10、上面讲到了cookie的创建我们现在来看一个利用cookie保存浏览记录实例。浏览记录的显示是从cookie里读出来,然后解析成json,生成html元素。因为用户可能会同时打开好几个页面,这几个页面上可能都有浏览记录,为了使即使显示浏览记录,每秒中刷新一次。要用到2个js文件,history.js,关键的聊天记录保存和读取代码。json.js,对json进行处理。history.js

var addHistory=function(num,id){stringCookie=getCookie('history');var stringHistory=""!=stringCookie?stringCookie:"{history:[]}";var json=new JSON(stringHistory);var e="{num:"+num+",id:"+id+"}";json['history'].push(e);//添加一个新的记录setCookie('history',json.toString(),30);
}//显示历史记录
var DisplayHistory=function(){var p_ele=document.getElementById('history');while (p_ele.firstChild) {p_ele.removeChild(p_ele.firstChild);}var historyJSON=getCookie('history');var json=new JSON(historyJSON);var displayNum=6;for(i=json['history'].length-1;i>0;i--){addLi(json['history'][i]['num'],json['history'][i]['id'],"history");displayNum--;if(displayNum==0){break;}}
}//添加一个li元素
var addLi=function(num,id,pid){var a=document.createElement('a');var href='product.action?pid='+id;a.setAttribute('href',href);var t=document.createTextNode(num);a.appendChild(t);var li=document.createElement('li');li.appendChild(a);document.getElementById(pid).appendChild(li);
}//添加cookie
var setCookie=function(c_name,value,expiredays)
{var exdate=new Date()exdate.setDate(exdate.getDate()+expiredays)cookieVal=c_name+ "=" +escape(value)+((expiredays==null) ? "" : ";expires="+exdate.toGMTString());//alert(cookieVal);document.cookie=cookieVal;
}//获取cookie
function getCookie(c_name){if (document.cookie.length>0){c_start=document.cookie.indexOf(c_name + "=")if (c_start!=-1){ c_start=c_start + c_name.length+1 c_end=document.cookie.indexOf(";",c_start)if (c_end==-1) c_end=document.cookie.length//document.write(document.cookie.substring(c_start,c_end)+"<br>");return unescape(document.cookie.substring(c_start,c_end))} }return ""
}

11、json文件

var JSON = function(sJSON){this.objType = (typeof sJSON);this.self = [];(function(s,o){for(var i in o){o.hasOwnProperty(i)&&(s[i]=o[i],s.self[i]=o[i])};})(this,(this.objType=='string')?eval('0,'+sJSON):sJSON);
}JSON.prototype = {toString:function(){return this.getString();},valueOf:function(){return this.getString();},getString:function(){var sA = [];(function(o){var oo = null;sA.push('{');for(var i in o){if(o.hasOwnProperty(i) && i!='prototype'){oo = o[i];if(oo instanceof Array){sA.push(i+':[');for(var b in oo){if(oo.hasOwnProperty(b) && b!='prototype'){sA.push(oo[b]+',');if(typeof oo[b]=='object') arguments.callee(oo[b]);}}sA.push('],');continue;}else{sA.push(i+':'+oo+',');}if(typeof oo=='object') arguments.callee(oo);}}sA.push('},');})(this.self);return sA.slice(0).join('').replace(/[object1object],/ig,'').replace(/,}/g,'}').replace(/,]/g,']').slice(0,-1);},push:function(sName,sValue){this.self[sName] = sValue;this[sName] = sValue;}
}

12、html文档

<script type="text/javascript" src="../js/json.js"></script>
<script type="text/javascript" src="../js/history.js"></script>
<ul id="history"></ul>
<script> addHistory(15810782304,2);addHistory(64654665,2);addHistory(6843212,2);addHistory(84984432521,2);setInterval("DisplayHistory()",1000);
</script>

面试题-js获取cookie中存储的值?相关推荐

  1. sessionlistener方法中获取session中存储的值报空指针异常_从Golang实践中得到的教训...

    当使用复杂的分布式系统时,可能会遇到并发处理的需求.我们知道golang的协程是处理并发的利器之一,加上Golang为静态类型和编译型使得其在企业中使用越来越广泛.Mode.net公司系统每天要处理实 ...

  2. js获取action中返回的值

    因为老是忘记,所以记录下, var hostname = '${hostname}'; hostname= eval("("+hostname+")"); va ...

  3. JSP、EL和JSTL-学习笔记03【EL介绍和运算符、EL获取域中存储的数据】

    Java后端 学习路线 笔记汇总表[黑马程序员] JSP.EL和JSTL-学习笔记01[JSP基础语法] JSP.EL和JSTL-学习笔记02[MVC] JSP.EL和JSTL-学习笔记03[EL介绍 ...

  4. 操作 js-cookie 获取 cookie 中的 token userInfo 用户头像

    1.操作 cookie 工具 - src/utils/cookie.js import Cookies from 'js-cookie'// Cookie的key值 export const Key ...

  5. JS获取URL中参数值(QueryString)的4种方法分享

    http://www.jb51.net/article/48942.htm JS获取URL中参数值(QueryString)的4种方法分享 作者: 字体:[增加 减小] 类型:转载 今天碰到要在一个页 ...

  6. js 获取字符串中最后一个斜杠前面/后面的内容

    js 获取字符串中最后一个斜杠后面的内容: var str = "/asdasf/asfaewf/agaegr/trer/rhh"; var index = str .lastIn ...

  7. js取iframe 上级页面_原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法...

    用原生js在父页面获取iframe子页面的元素,以及在子页面获取父页面元素,这是平时经常会用到的方法,这里写一个例子来总结下: 1.父页面(demo.html),在父页面修改子页面div的背景色为灰色 ...

  8. html获取url参数值,js获取url中参数值的两种方法

    本节主要内容: js获取url中参数值. 方法1:正则分析法 复制代码 代码示例: function getQueryString(name) { var reg = new RegExp(" ...

  9. 【杂记】(input获取焦点失去焦点、获取input中输入的值、 键盘事件、js事件、Math 属性、手机自适应meta定义、 去掉input内置阴影、图片居中、去蓝色默认背景、点击去掉默认边框)

    1. input获取焦点失去焦点 input:focus{border:1px red solid:} 获取焦点 .focus()失去焦点.blur() 2. 获取input中输入的值 <inp ...

最新文章

  1. 验证Xcode真伪的方法,来自苹果官网
  2. Android使用开源项目Xutils实现多线程下载文件
  3. IE 域组策略对服务器无效的原因
  4. c语言 求方程ax,关于求方程ax2+bx+c=0根的问题
  5. Tomcat配置优化
  6. openlayer 图层上下_OpenLayers实现图层切换控件
  7. Office2007打开文件提示“您尝试打开的文件xxx.xls的格式与文件扩展名指定的格式不一致”的解决办法...
  8. Android ListView 疯狂之旅 之 《自定义下拉刷新功能的ListView》
  9. dhclient常用命令
  10. Unity Shader:Waveform波形(1)-用正弦函数做闪烁效果并分析波形公式中的参数
  11. C语言丨求两个正整数的最大公约数
  12. JZOJ4742 单峰
  13. 中英文对照 —— 心理/神经科学
  14. bzoj 1694 1742: [Usaco2005 nov]Grazing on the Run 边跑边吃草(DP)
  15. 支持下一代分布式应用链开发的区块链服务互联网
  16. 局域网管理工具_分享一款苹果手机文件管理工具
  17. springboot整合XXL-JOB实行动态定时任务
  18. Ubuntu下多网卡配置RTNETLINK answers: File exists的解决方案
  19. 在线教育数据分析实战项目案例
  20. html 占两行,css – 将html页面分成两行50%的高度

热门文章

  1. 163VIP邮箱怎么设置邮件签名?如何群发邮件?
  2. 教育技术学计算机教师,中小学教师计算机教育技术能力培训体会
  3. Pug -- 全新的 Vue 高效书写体验
  4. OpenVP*整合ldap认证
  5. 设备档案管理软件中的检修预警设计思路
  6. 百度收录批量查询_网站内页被批量降权如何恢复?
  7. 《游戏学习》 Java实现潜艇大战游戏源码
  8. BCC – 用于Linux性能监视,网络和更多的动态跟踪工具
  9. 计算机网络研修,计算机研修心得体会(精选3篇)
  10. python3[爬虫基础入门实战] 爬取豆瓣电影排行top250