localstorage跨域存储读取数据
来源:互联网 发布:网络客服沟通技巧 编辑:程序博客网 时间:2024/06/11 13:01
postMessage(data,origin)方法允许来自不同源的脚本采用异步方式进行通信,可以实现跨文本档、多窗口、跨域消息传递。接受两个参数:
① data:要传递的数据,HTML5规范中提到该参数可以是JavaScript的任意基本类型或可复制的对象,然而并不是所有浏览器支持任意类型的参数,部分浏览器只能处理字符串参数,所以在传递参数时需要使用JSON.stringify()方法对对象参数序列化。
② origin:字符串参数,指明目标窗口的源,协议+主机+端口号[+URL],URL会被忽略,所以可以不写,只是为了安全考虑,postMessage()方法只会将message传递给指定窗口,当然也可以将参数设置为"*",这样可以传递给任意窗口,如果要指定和当前窗口同源的话设置为"/"。
eg:postMessage和iframe解决普通的跨域问题。
http://javascript.exam.com/text.html:
http://jQuery.exam.com/text.html:
假设有http://javascript.exam.com/text.html和http://jquery.exam.com/text.html两个页面。
通过http://javascript.exam.com/text.html页面去修改http://jquery.exam.com/text.html页面的本地数据:
① 在http://javascript.exam.com/text.html页面创建一个iframe,嵌入http://jquery.exam.com/text.html页面。
② http://javascript.exam.com/text.html页面通过postMessage传递指定格式的消息给http://jquery.exam.com/text.html页面。
③ http://jquery.exam.com/text.html页面解析http://javascript.exam.com/text.html页面传递过来的消息内容,调用localStorage API 操作本地数据。
④ http://jquery.exam.com/text.html页面包装localStorage的操作结果,并通过postMessage传递给http://javascript.exam.com/text.html页面。
⑤ http://javascript.exam.com/text.html页面解析http://jquery.exam.com/text.html页面传递回来的消息内容,得到 localStorage 的操作结果。
在例子中页面加载的时候主页面向iframe发送’getColor‘ 请求(参数没实际用处)
window.onload=function(){ window.frames[0].postMessage('getcolor','http://jquery.exam.com'); }
iframe接收消息,并把当前颜色发送给主页面呢
window.addEventListener('message',function(e){ if(e.source!=window.parent) return; var color=container.style.backgroundColor; window.parent.postMessage(color,'*'); },false);
我们利用这时候的MessageEvent对象判断了一下消息源,MessageEvent是一个这样的东东
有几个重要属性
- data:顾名思义,是传递来的message
- source:发送消息的窗口对象
- origin:发送消息窗口的源(协议+主机+端口号)
这样就可以接收跨域的消息了,我们还可以发送消息回去,方法类似
主页面接收消息,更改自己div颜色
window.addEventListener('message',function(e){ var color=e.data; document.getElementById('color').style.backgroundColor=color; },false);
当点击iframe事触发其变色方法,把最新颜色发送给主页面
function changeColor () { var color=container.style.backgroundColor; if(color=='rgb(204, 102, 0)'){ color='rgb(204, 204, 0)'; }else{ color='rgb(204,102,0)'; } container.style.backgroundColor=color; window.parent.postMessage(color,'*'); }
主页面还是利用刚才监听message事件的程序处理自身变色
window.addEventListener('message',function(e){ var color=e.data; document.getElementById('color').style.backgroundColor=color; },false);
- localstorage跨域存储读取数据
- Html使用localStorage存储,读取,删除数据
- localStorage 如何存储JSON数据并读取JSON数据
- 使用localStorage存储数据
- localStorage存储JSON数据
- 数据存储localStorage的使用方法
- 客户端数据存储 localStorage sessionStorage
- 关于localStorage存储json数据
- AngularJS 使用 localStorage 存储数据。
- [HTML5]数组数据localStorage存储
- angularjs 本地数据存储LocalStorage
- 用localStorage来存储数据
- H5-localStorage数据存储总结
- 关于localStorage存储json数据
- HTML5存储数据--localStorage长期保存数据
- HTML5 LocalStorage 本地存储JSON数据
- 本地数据存储localStorage的setIte…
- HTML5 LocalStorage 本地存储JSON数据
- 操作系统处理机管理功能(1)之进程控制及进程同步
- 非阻塞模式(ioctlsocket)
- 在Predix平台玩转C#
- http协议的状态码
- 【路在脚下】----成长的感觉
- localstorage跨域存储读取数据
- Ubuntu 16.04LTS 安装pycharm
- 微服务架构浅谈(一)
- 根据underscore精简的函数(集合篇)
- jquery边框特效
- 洛必达法则与泰勒公式
- adb server didn't ack问题
- codeforces 794C Naming Company(贪心)
- java循环语句的学习