JS操作cookie以及本地存储(sessionStorage 和 localStorage )
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 )的更多相关文章
- 本地存储sessionStorage 、 localStorage 、cookie整理
sessionStorage . localStorage .cookie 的区别 sessionStorage 和 localStorage 是HTML5 Web Storage API 提供的,可 ...
- H5本地存储sessionStorage和localStorage的区别
sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁.因此sessionStorage不是一种持久化的本地 ...
- web本地存储 sessionStorage 和 localStorage
1.sessionStorage 临时存储 为每一个数据源维持一个存储区域,在浏览器打开期间存在,包括页面重新加载. 2.localStorage 长期存储 与sessionStorage一样,但在 ...
- 分步引导中,Js操作Cookie,实现判断用户是否第一次登陆网站
上一篇介绍了分布引导插件IntroJs的使用,本篇介绍通过Js操作cookie的方法. 分步引导的功能只适合与第一次登陆网站的新用户,不能每次登陆都提示分布引导,那么如何判断用户是否第一次登录网站呢? ...
- jquery.cookie.js 操作cookie实现记住密码功能的实现代码
jquery.cookie.js操作cookie实现记住密码功能,很简单很强大,喜欢的朋友可以参考下. 复制代码代码如下: //初始化页面时验证是否记住了密码 $(document).ready( ...
- js操作cookie,实现登录密码保存 [转]
转自:http://blog.csdn.net/zyujie/article/details/8727828 ( 谢谢博主了) js操作cookie,实现登录密码保存.cookie的存放方式是以键值对 ...
- js 操作 cookie
js 操作 cookie 的方法如下: //设置cookie function setCookie(cname, cvalue, exdays) { var d = new Date(); d.set ...
- js操作cookie(创建、读取、删除)方法总结
js操作cookie,可以通过开源的插件实现,方便快捷,兼容性好,同样也可以自己写: 此文主要介绍两个常用的插件: Js.cookie.js 和 jQuery.cookie.js 0.Js.cooki ...
- 关于cookie与本地 存储的区别的问题。
关于cookie与本地 存储的区别的问题. 1. cookie在浏览器和服务器间来回传递.而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存. 2. coo ...
随机推荐
- Jquery焦点图实例
对于很多建站的朋友来讲,焦点图并不陌生,一般的企业站,门户站都会用到焦点图.我们平时在写html代码的时候,很多人为了省时省力,对于焦点图都是在网上下载一些人家写好的代码,直接套上去即可,很多时候我自 ...
- select @@identity的用法
用select @@identity得到上一次插入记录时自动产生的ID 如果你使用存储过程的话,将非常简单,代码如下:SET @NewID=@@IDENTITY 说明: 在 一条 INSERT.SEL ...
- Ubuntu 循环遍历当前目录下所有文本文件中的字符
sudo grep -n 'xxxx' -r ./*
- 让VIEWSTATE从页面中完全消失(小技巧)
VIEWSTATE是个好东西,是asp.net的一大创举,给web开发带来了极大的便利,然后这种便利是一种双刃剑,尤其是在前台页面,大多数前台页面都是用来展示列表数据,和用户交互的地方现在大都采用 ...
- MS14-025引起的问题 - 1
windows2008有一个叫组策略首选项(Group Policy Preference)的新特性.这个特性可以方便管理员在整个域内部署策略.本文会详细介绍这个组策略首选项的一些缺陷.尤其是当下发的 ...
- SqlServer表数据与excel中数据的互相复制
一.SqlServer表数据复制到excel 1.新建查询,用sql语句把表数据读出来 2.然后,选择数据,右键,复制(也可以点击连同标题复制),复制到记事本中(不然会乱码) 3.然后再把记事本的内容 ...
- VR制作的规格分析
因为UE4的演示资源更丰富一些,我这边把UE4的有代表性的演示都跑了一遍,同时也通过Rift确认效果,和里面的资源制作方式. 首先,UE4是基于物理渲染的引擎,大部分都是偏向图像真实的.使用的材质 ...
- DNS:www.flickr.com
203.84.197.9 203.84.197.25 203.84.197.26 203.84.197.27
- mysql之触发器trigger 详解
为了梦想,努力奋斗! 追求卓越,成功就会在不经意间追上你 mysql之触发器trigger 触发器(trigger):监视某种情况,并触发某种操作. 触发器创建语法四要素:1.监视地点(table) ...
- Capabilities and Limitations of Optimizing Compilers
Computer Systems A Programmer's Perspective Second Edition #include <stdio.h> main(){ int wr; ...