背景:在开发中,从1.html上直接跳转到2.html,需要将中文带过去并且在2.html上用到这个参数,但是参数通过url带过去到时候乱码了,无法直接使用,就想能否不通过url直接将参数带过去,而是使用本地存储来存取参数。
我用到的方法是:
//存入本地: localStorage.setItem("test", "123456"); //获取参数: localStorage.getItem("test");
这里用到的是localStorage存储在本地
一、localStorage 存储在本地
容量为5M或者更大,不会在请求时候携带传递,在所有同源窗口中共享,数据一直有效,除非人为删除,可作为长期数据。
//存入本地 localStorage.setItem("test", "123456"); //或者用下面的写法 localStorage.test='123456'; //获取参数 localStorage.getItem("test"); //或者用下面的写法 localStorage.test //数据是有排序的,后加入的角标靠前,最后加入的角标为0 //获取第一个键,按角标获取 localStorage.key(0); //获取最后一个键 localStorage.key(""); //获取数据的长度 localStorage.length; //删除 localStorage.removeItem("test"); //清空 localStorage.clear();//将所有保存的数据删除
注意点:
1、localStorage数据不需要依赖服务器环境访问,可以直接在本地文件访问;
2、不需要额外的文件支持。
3、同源窗口指的是同一个域名下或者是index.html所在的文件夹下的文件路径
4、localStorage相当于将数据保存在磁盘,是永久的,但是其针对的是固定的域名下的文件,打开其他的域名下的网页,localStorage不会显示。
本地存储还有另外两种方法
二、cookie 存储在本地
容量最大4k,在同源的http请求时携带传递,损耗带宽,可设置访问路径,只有此路径及此路径的子路径才能访问此cookie,在设置的过期时间之前有效。
//写cookie $.cookie('mycookie','123',{expires:7,path:'/'}); //cookie的设置有三个参数,第一为设置数据的键,第二个为设置数据的值,expires表示有效时间,单位为天,path为访问路径,"/"表示当前文件路径,在网站中表示根目录。 //jquery 获取cookie $.cookie('mycookie'); //删除cookie,传递null值 $.cookie("mycookie", null});
注意点:
1、cookie的访问需要服务器环境,直接在本地文件访问无效;
2、cookie的访问和设置需要导入jquery.cookie.js文件;
3、浏览器对每一个访问的地址下可添加的cookie是有限制的;同时每个浏览器可添加的cookie个数也存在限制。
4、如果不设置路径,默认情况下只有设置cookie的网页才可以访问此cookie;如果想网站的网页可以共享cookie,将路径设为根目录。
5、cookie就相当于一个能存储数据的微型本地数据库,”mycookie”相当于每条数据的key。
三、sessionStorage 存储在本地
容量为5M或者更大,不会在请求时候携带传递,在同源的当前窗口关闭前有效。
//写入 sessionStorage.setItem('username','123456'); //或者 sessionStorage.username; //读取 sessionStorage.getItem("username"); //或者 sessionStorage.username; //数据是有排序的,后加入的角标靠前,最后加入的角标为0 //获取第一个键,按角标获取 sessionStorage.key(0); //获取最后一个键 sessionStorage.key(""); //获取数据的长度 sessionStorage.length; //删除 sessionStorage.removeItem("username"); //清空 sessionStorage.clear();//将所有保存的数据删除
注意点:
1、sessionStorage同样不需要再服务器的环境下运行;
2、不需要额外的文件支持;
3、sessionStorage数据设置后即使页面进行重载也不会清除;但当该窗口关闭后,里面的数据就会清除,再打开没有数据。相当于将数据保存在内存中。