




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第使用window.postMessage()方法在两个网页间传递数据目录说明发送端postMessage程序发送消息的基本语法:targetWindowmessagetargetOrigintransfer接收端完整程序发送程序接收程序
说明
window.postMessage()方法可以安全地实现Window对象之间的跨域通信。例如,在一个页面和它生成的弹出窗口之间,或者是页面和嵌入其中的iframe之间。
通常情况下,不同页面上的脚本允许彼此访问,当且仅当它们源自的页面共享相同的协议,端口号和主机(也称为同源策略)。window.postMessage()提供了一个受控的机制来安全地规避这个限制(如果使用得当的话)。
一般来说,一个窗口可以获得对另一个窗口的引用(例如,通过targetWindow=window.opener),然后使用targetWindow.postMessage()在其上派发MessageEvent。接收窗口随后可根据需要自行处理此事件。传递给window.postMessage()的参数通过事件对象暴露给接收窗口。
发送端
postMessage程序
varreceiver=document.getElementById('receiver').contentWindow;
varbtn=document.getElementById('send');
btn.addEventListener('click',function(e){
e.preventDefault();
varval=document.getElementById('text').value;
receiver.postMessage("Hello"+val+"!","");
});
发送消息的基本语法:
targetWindow.postMessage(message,targetOrigin,[transfer]);
targetWindow
targetWindow就是接收消息的窗口的引用。获得该引用的方法包括:
Window.openWindow.openerHTMLIFrameElement.contentWindowWindow.parentWindow.frames+索引值
message
message就是要发送到目标窗口的消息。数据使用结构化克隆算法进行序列化。这意味着我们可以将各种各样的数据对象安全地传递到目标窗口,而无需自己对其进行序列化。
targetOrigin
targetOrigin就是指定目标窗口的来源,必须与消息发送目标相一致,可以是字符串*或URI。*表示任何目标窗口都可接收,为安全起见,请一定要明确提定接收方的URI。
transfer
transfer是可选参数
接收端
目标窗口通过执行下面的JavaScript来侦听发送过来的消息:
window.addEventListener("message",receiveMessage,false);
functionreceiveMessage(event){
if(event.origin!=="")
return;
}
event对象有三个属性,分别是origin,data和source。event.data表示接收到的消息;event.origin表示postMessage的发送来源,包括协议,域名和端口;event.source表示发送消息的窗口对象的引用;我们可以用这个引用来建立两个不同来源的窗口之间的双向通信。
完整程序
发送程序
!DOCTYPEHTML
html
head
metacharset="utf-8"
title42度空间-window.postMessage()跨域消息传递/title
/head
body
div
inputid="text"type="text"value="42度空间"/
buttonid="send"发送消息/button
/div
iframeid="receiver"src="/static/html/receiver.html"width="500"height="60"
p你的浏览器不支持IFrame。/p
/iframe
script
window.onload=function(){
varreceiver=document.getElementById('receiver').contentWindow;
varbtn=document.getElementById('send');
btn.addEventListener('click',function(e){
e.preventDefault();
varval=document.getElementById('text').value;
receiver.postMessage("Hello"+val+"!","");
/script
/body
/html
接收程序
!DOCTYPEHTML
html
head
metacharset="utf-8"
title42度空间-从接收消息/title
/head
body
divid="message"
HelloWorld!
/div
script
window.onload=function(){
varmessageEle=document.getElementById('message');
window.addEventListener('message',function(e){
alert(e.origin);
if(e.origin!==""){
return;
messageEle.inner
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 软件设计师必看试题及答案全解
- VB语言综合测试试题及答案
- 如何设计有效的风险评估框架试题及答案
- 计算机基础知识与应用试题及答案
- 2025届江苏省无锡市东林中学八年级数学第二学期期末质量检测模拟试题含解析
- 2025医务人员手卫生规范试题及答案
- 2025届延安市重点中学数学七下期末检测模拟试题含解析
- 法学概论核心理论试题及答案
- 云服务管理体系试题与答案分析
- 山西省朔州市第三中学2025届数学八下期末监测模拟试题含解析
- 企业消防管理安全制度
- 广东省广州市2025届高三下学期考前冲刺训练(三)物理试卷(含答案)
- 2025年中国桦木工艺胶合板市场调查研究报告
- 广西南宁市新民中学2025届七下生物期末监测试题含解析
- (三模)石家庄市2025届高中高三毕业年级教学质量检测(三)地理试卷(含标准答案)
- 跨境电商劳务合同协议
- 解除原有合同协议书
- 2025中小学学校教材教辅征订管理工作方案
- 2025-2030中国西餐行业市场发展前瞻及投资战略研究报告
- 2025年中考时事政治测试题及答案
- 湖北省宜昌市2023~2024学年高二数学下学期5月联合测评试题含答案
评论
0/150
提交评论