H5本地存储
- localStorage的特点
- 生命周期:持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的
- 储存的信息在同一域中是共享的,localStorage受同源策略的约束。
- 当本页面操作(修改,删除,新增)了localStorage的时候,本页面不会触发storage事件,但是别的页面会触发storage事件(注意storage事件只能在服务器环境下触发)
大小:据说是5M(跟浏览器有关),localStorage本质上是对字符串的读取,如果储存的内容过多的话会消耗内存空间,导致页面加载时间变长。
在非ie的浏览中可以在本地打开,ie浏览器又在服务器中打开。
设置:localStorage.setItem("userName","value")
获取:localStorage.getItem("userName")
也可获取键名:localStorage.key(0) 获取第一个键名
删除:localStorage.removeItem("userName")
清空所有:localStorage.clear()
注意:当本页面操作(修改,删除,新增)了localStorage的时候,本页面不会触发storage事件,但是别的页面会触发storage事件,这个事件需要给要使用本地储存并要求是最新的页面中添加,加给window对象,事件对象e中保存了storageEvent对象
属性 | 含义 |
key | 设置或删除或修改的键名,调用clear()时,则为null |
oldvalue | 改变之前的旧值,如果是新增元素,则为null |
newvalue | 改变之后的新值,如果是删除元素,则为null |
storageArea | 该属性是一个引用,指向发生改变的sessionStorage对象或localStorage对象 |
url | 触发这个改变事件页面的url |
2. sessionStorage
和localStorage对象的设置,储存修改,删除都一模一样,用于本地储存一个会话(session)中的数据,在本页面关闭后会自动销毁,如果在新窗口开启同源的另一页面,sessionStorage也是没有的
localStorage和sessionStorage和cookie的区别
- 相同:在本地(浏览器端储存数据)
- 不同:
- localStorage,只要在相同的的协议,相同的端口、相同的主机名下,就能读取/修改同一份localStorage数据
- sessionStorage比localStorage更苛刻一点,除了协议、端口、和主机名外,还要求在同一窗口(也就是浏览器标签页下)下。
- localstorage是永久储存的,除非手动删除
- sessionStorage 当前会话结束(当前页面关闭后,自动销毁)
- cookie的数据会在每一次发送http请求的时候同时发送给服务器,而localStorage和sessionStorage不会。