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 ...
随机推荐
- Google Code Jam 2010 Round 1C Problem B. Load Testing
https://code.google.com/codejam/contest/619102/dashboard#s=p1&a=1 Problem Now that you have won ...
- 提升 web 应用程序的性能(二)
最佳实践 本章将略述能帮助您提升 web 应用程序性能的最佳实践. 减少 HTTP 请求数 每个 HTTP 请求都有开销,包括查找 DNS.创建连接及等待响应,因此削减不必要的请求数可减少不必要的开销 ...
- lightning mdb 源代码分析系列(3)
本系列前两章已经描述了系统架构以及系统构建的基础内存映射,本章将详细描述lmdb的核心,外存B+Tree的操作.本文将从基本原理.内存操作方式.外存操作方式以及LMDB中的相关函数等几方面描述LMDB ...
- PHPExcel 是用来操作Office Excel 文档的一个PHP类库
PHPExcel 是用来操作Office Excel 文档的一个PHP类库,它基于微软的OpenXML标准和PHP语言.可以使用它来读取.写入不同格式的电子表格,如 Excel (BIFF) .xls ...
- [转]IE11下Forms身份认证无法保存Cookie的问题
本文转自:http://www.cnblogs.com/jaxu/p/3698377.html ASP.NET中使用Forms身份认证常见的做法如下: 1. 网站根目录下的Web.config添加au ...
- 在Linux中安装SEP Client
1. 下载Symantec_Endpoint_Protection_12.1.5_Linux_Client_EN, 解压其中的sep-deb.zip 2. 若直接sudo ./install.sh ...
- tmux使用笔记
tmux是指通过一个终端登录远程主机并运行后,在其中可以开启多个控制台的终端复用软件. 安装tmux需要先安装依赖包libevent,因为libevent安装在临时位置,所以在编译tmux过程中用到n ...
- 推荐!国外程序员整理的 PHP 资源大全
推荐!国外程序员整理的 PHP 资源大全 2014/08/02 · PHP, 工具与资源 · 8.5K 阅读 · 1 评论· php 分享到:0 与<YII框架>不得不说的故事—安全篇 R ...
- VS编程中找不到Microsoft.Office.Core、Microsoft.Office.Interop.Word和VBIDE
在使用vs2005. vs2008. vs2010 制作包含 word等office的应用程序时,有时找不到对Microsoft.Office.Core. Microsoft.Office.Inter ...
- Tomcat安装、启动和配置
Tomcat服务器介绍 Tomcat是一个免费开发源代码的web应用服务器,具有与IIS.Apache等web服务器一样处理html页面的功能,另外它还是一个Servlet和JSP容器,独立的serv ...