JS操作cookie

cookie的操作用两种方式

1.substring

  //创建cookie
function setCookie(name,value,expires,path,domain,secure){
var cookieText=encodeURIComponent(name)+'='+encodeURIComponent(value);
if(expires instanceof Date){
cookieText+='; expires='+expires;
}
if(path){
cookieText+='; path='+path;
}
if(domain){
cookieText+='; domain='+domain;
}
if(secure){
cookieText+='; secure';
}
document.cookie=cookieText;
}
//获取cookie
function getCookie(name){
var cookieName=encodeURIComponent(name)+'=';
var cookieStart=document.cookie.indexOf(cookieName);
var cookieValue=null;
if(cookieStart>-1){
var cookieEnd=document.cookie.indexOf(';',cookieStart);//indexOf()获取的是第一个匹配的元素的下标
if(cookieEnd==-1){
cookieEnd=document.cookie.length;
}
cookieValue=decodeURIComponent(document.cookie.substring(cookieStart+cookieName.legnth,cookieEnd))
}
return cookieValue; }
//删除cookie
function unsetCookie(name){
document.cookie=name+"=; expires="+new Date(0);
}

ps:

chrome浏览器在本地获取不到cookie。必须在服务器上才可以。如果是本地的话,你可以放到local的www目录下面。

Google Chrome只支持在线网站的cookie的读写操作,对本地html的cookie操作是禁止的。所以下面的代码如果你写在一个本地的html文件中,将弹出的对话框内容为空。

2.

还有一种是w3c官网额操作(但是没有对内容编码和解码,不建议使用)

//设置cookie(这种方式并不好,应为,没有对cookie值进行编码和解码,)
//但是,我们依然可以通过这个方法熟练它的写法滴呀
function setCookie(name,value,exdays){
var d=new Date();
d.setTime(d.getTime()+(exdays*24*60*60*1000));
var expires="expires="+d.toUTCString();
document.cookie=name+'='+value+'; '+expires;
}
//获取cookie的操作(用split 然后substring)
function getCookie(name){
var cname=name+'=';
var ca=document.cookie.split(';'); //用split分割成一个数组
for(var i=0;i<ca.length;i++){
if(ca[i].indexOf(name)!=-1){
return ca[i].substring(cname.length)
}
}
return "";
}
//清楚cookie
function clearCookie(name){
setCookie(name,"",-1);
}
function checkCookie(){
var user=getCookie('userName');
if(user!=''){
alert('Welcome agin '+user);
}else{
if(user!="" && user !=null){
setCookie("username",user,365)
}
}
}

ps:补充一点编码和解码的知识;

JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:

unescape,decodeURI,decodeURIComponent 。

区别:

我们可以知道:escape()除了 ASCII 字母、数字和特定的符号外,对传进来的字符串全部进行转义编码,因此如果想对URL编码,最好不要使用此方法。而encodeURI()

用于编码整个URI,因为URI中的合法字符都不会被编码转换。encodeURIComponent方法在编码单个URIComponent 应当是最常用的,它可以讲参数中的

中文、特殊字符进行转义,而不会影响整个URL。

html5中的新特性(sessionStorage 和 localStorage )

html5中的Web Storage包括了两种存储方式:sessionStorage和localStorage。sessionStorage用于本地存储一个会话(session)中的数据,

这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁,因此sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存

储。而localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。

一、web storage和cookie的区别
Web Storage的概念和cookie相似,区别是它是为了更大容量存储设计的。Cookie的大小是受限的,并且每次你请求一个新的页面的时候Cookie都会被发送过去,

这样无形中浪费了带宽,另外cookie还需要指定作用域,不可以跨域调用。

除此之外,Web Storage拥有setItem,getItem,removeItem,clear等方法,不像cookie需要前端开发者自己封装setCookie,getCookie。

但是Cookie也是不可以或缺的:Cookie的作用是与服务器进行交互,作为HTTP规范的一部分而存在 ,而Web Storage仅仅是为了在本地“存储”数据而生。

二、html5 web storage的浏览器支持情况
浏览器的支持除了IE7及以下不支持外,其他标准浏览器都完全支持(ie及FF需在web服务器里运行),值得一提的是IE总是办好事,例如IE7、IE6中的UserData其实就是

javascript本地存储的解决方案。通过简单的代码封装可以统一到所有的浏览器都支持web storage。

实例代码

function localStorageInfo1(){

  if(window.localStorage){
alert('浏览器支持localStorage');
}else{
alert('浏览器不支持localStorage');
} var key='userName';
var value='yuanzhangliu';
var key1='pwd';
var value1='123456';
//使用setItem赋值
window.localStorage.setItem(key,value);
window.localStorage.setItem(key1,value1);
//用key方法来获取键值
alert(window.localStorage.key(0));
alert(window.localStorage.key(1));
//使用getItem(key)方式来获取值
alert(window.localStorage.getItem(key))
alert(window.localStorage.getItem(key1));
//使用removeItem(key)来移除值
window.localStorage.removeItem(key);
window.localStorage.removeItem(key1);
//全部的清除
window.localStorage.clear(); } function localStorageInfo2(){
//同样我们也可以使用第二种方式来操作;
window.localStorage.keyName='value';
window.localStorage['keyName1']='value1' //取值方式也可以变
alert(window.localStorage.keyName);
alert(window.localStorage['keyName1']); }
//localStorage的遍历
function hoop(){
var storage=window.localStorage;
var len=storage.length
for(var i=0;i<len;i++){
var key=storage.key(i); //获取的值key的值
var value=storage.getItem(key);//利用key来获取值
alert(value);
}
}
//居然没触发这个事件,可见兼容性有待....(好像没出发滴呀)
window.onload=function (){
if(window.addEventListener){
window.addEventListener("storage",handle_storage,false);
}else if(window.attachEvent){
window.attachEvent("onstorage",handle_storage);
}
}
function handle_storage(e){
if(!e) {
e=window.event;
}
alert('event fuck');
}

 

JS操作cookie以及本地存储(sessionStorage 和 localStorage )的更多相关文章

  1. 本地存储sessionStorage 、 localStorage 、cookie整理

    sessionStorage . localStorage .cookie 的区别 sessionStorage 和 localStorage 是HTML5 Web Storage API 提供的,可 ...

  2. H5本地存储sessionStorage和localStorage的区别

    sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁.因此sessionStorage不是一种持久化的本地 ...

  3. web本地存储 sessionStorage 和 localStorage

    1.sessionStorage  临时存储 为每一个数据源维持一个存储区域,在浏览器打开期间存在,包括页面重新加载. 2.localStorage 长期存储 与sessionStorage一样,但在 ...

  4. 分步引导中,Js操作Cookie,实现判断用户是否第一次登陆网站

    上一篇介绍了分布引导插件IntroJs的使用,本篇介绍通过Js操作cookie的方法. 分步引导的功能只适合与第一次登陆网站的新用户,不能每次登陆都提示分布引导,那么如何判断用户是否第一次登录网站呢? ...

  5. jquery.cookie.js 操作cookie实现记住密码功能的实现代码

    jquery.cookie.js操作cookie实现记住密码功能,很简单很强大,喜欢的朋友可以参考下.   复制代码代码如下: //初始化页面时验证是否记住了密码 $(document).ready( ...

  6. js操作cookie,实现登录密码保存 [转]

    转自:http://blog.csdn.net/zyujie/article/details/8727828 ( 谢谢博主了) js操作cookie,实现登录密码保存.cookie的存放方式是以键值对 ...

  7. js 操作 cookie

    js 操作 cookie 的方法如下: //设置cookie function setCookie(cname, cvalue, exdays) { var d = new Date(); d.set ...

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

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

  9. 关于cookie与本地 存储的区别的问题。

    关于cookie与本地 存储的区别的问题. 1. cookie在浏览器和服务器间来回传递.而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存. 2. coo ...

随机推荐

  1. 小结:kmp

    复杂度: O(len(a)+len(b)) 技巧及注意: 在匹配的时候记住先要自身匹配然后再匹配即可,同时边界问题不能忽略,处理好点吧. #include <cstdio> #includ ...

  2. Scala中Zip相关的函数

    在Scala中存在好几个Zip相关的函数,比如zip,zipAll,zipped 以及zipWithIndex等等.我们在代码中也经常看到这样的函数,这篇文章主要介绍一下这些函数的区别以及使用. 1. ...

  3. ACM对时间掌控力和日积月累的习惯的意义

    马云说,要想创业成功,不是要知道现在什么东西最火,而是要清楚的知道十年以后什么东西最火.这就意味着,你对时间掌控力,至少要有十年. 但是仔细回想一下自己的学生时代,自己对时间的把握是怎样的?有些人只能 ...

  4. SecureCRT的相关问题

    1. 中文显示乱码的解决方法 2. 显示Linux中的颜色信息 3. 解决终端长时间无输入导致SSH连接中断的问题 4. 以公钥方式代替密码方式登录服务器 在SecureCRT中创建Public Ke ...

  5. C++的ORM 开源框架

    C++的ORM 开源框架 介绍一个C++的ORM工具ODB SOCI.LiteSQL.POCO数据库访问类库对比

  6. FZU 2028 BFS+vector

    一个普通的bfs 如果不看样例和input的解释... 四个0真是神样例 又被input误导 以为每个点都按顺序有标号 传送门的终点给的是一个点的标号 然后结果是什么呢?无尽的runtime erro ...

  7. Hadoop2 实战系列之1 -- Hortonworks Sandbox的安装和使用

    欢迎转载,转载请注明出处,谢谢,徽沪一郎. 概要 本文主要讲述如何利用hortonworks sanbox来搭建hadoop2的学习环境.Hortonworks sanbox集成了hadoop2及其上 ...

  8. GitHub 初探

    前言:有时候在公司上班时自己写了一些代码,打算下班回家后继续写,或者在家修改好的代码第二天要拷到公司继续完善,代码就经常要在这两者之间来回同步,通常情况下我用网盘或者U盘,但是实在是很麻烦,不断的备份 ...

  9. 必应(Bing)每日图片获取API

    必应(Bing)每日图片获取API January 11, 2015 API http://lab.dobyi.com/api/bing.php 介绍 Value Description title ...

  10. HTML Questions:Front-end Developer Interview Questions

    What's a doctype do? Instruct the browser to render the page. What's the difference between standard ...