storage : 跨域的localstorage
示例
介绍
可跨域取localstorage,兼容原生的localstorage接口(length除外)
使用方法
1.如果只调用本域的localstorage内容,则接口与原生localstorage的一致 2.假设在A域中调用B域中的内容,需要在B域中部署代理页面, 下载代理页面 :http://style.c.aliimg.com/fdevlib/js/lofty-mobile/util/storage/1.0/proxy/localstorage.html 保存页面源代码放到B域的根目录的proxy文件夹下,取名为 localstorage.html,例如B域为s.1688.com 则代理页面的url为 http://s.1688.com/proxy/localstorage.html define(['util/storage/1.0'], function(localStorage){ localStorage.getItem(key); localStorage.getItem(key,{ domain:B, success:function(){} }); });
特别注意
1.安全问题考虑 如果要部署代理页面在自己的域中,就意味着该域中localstorage中的内容都是公开的,其他网站可以任意获取到, 若不想泄露这些数据,则后端需要配合过滤该代理页面的请求,根据请求中的refer字段,判断来源,可用白名单控制 2.当跨域取数据时为异步接口,需要提供回调方法
配置参数
配置参数 | 参数类型/可选值 | 参数默认值 | 作用说明 |
---|---|---|---|
domain | string | "" | 跨域时必选,设置目标的域 |
success | function | 跨域操作成功后的回调方法:可选 |
公共方法
方法名称 | 入参说明(参数中的opt的解释参见上面的"配置参数") | 返回值 | 作用说明 |
---|---|---|---|
getItem(key,opt) | key:存储的键 | 键对应的值 | 当没有opt参数时,则调用原生的接口 |
getItem(key,opt) | key:存储的键 | 键对应的值 | 当没有opt参数时,则调用原生的接口 |
setItem(key,val,opt) | key:存储的键 val:存储的值 |
/ | 当没有opt参数时,则调用原生的接口 |
clear(opt) | / | / | 当没有opt参数时,清空本域中的localstorage中的内容,若设置了opt,则清空对应的域中的localstorage |
key(index,opt) | index:获取对应域中localstorage第index个的key的名字 | 键的名字 | 当没有opt参数时,则调用原生的接口 |
length(opt) | / | 获取对应域中localstorage中存储的键值对的个数 | 原生的length是个属性,此处不兼容 |
removeItem(key,opt) | key:要删除的键 | / | 当没有opt参数时,则调用原生的接口 |