1.如果要接受从其他的窗口那里发过来的消息,就必须对窗口对象的message事件进行监控.

window.addEventListener("message",function(){},false);

使用window对象的postMessage方法向其他窗口发送消息,

otherwindow.postMessage(message,targetOrigin);

参数:message为所发送的消息文本,但也可以是任何javascript对象;

第二个参数为接受消息的对象窗口的URL地址.

otherWindow为要发送窗口对象的引用,可以通过window.open返回该对象,或通过对window.frames数组制定序号或名字的方式来返回单个frame所属的窗口对象.

新建二个项目:s1,s2

s1和s2相互发送数据:

s1 中的index.html:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script type="text/javascript">
window.addEventListener("message",function(ev){
document.getElementById("content").innerHTML=ev.origin+">>>"+ev.data;
},false);
function hello(){
var iframe=window.frames[0];
iframe.postMessage("思思博士","http://127.0.0.1:8020/s2/1.html");
}
</script>
</head>
<body>
<divn id="content"></divn>
<iframe src="http://127.0.0.1:8020/s2/1.html" width="100%" height="100" frameborder="2" onload="hello()"></iframe>
</body>
</html>

s2 中的1.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script type="text/javascript">
window.addEventListener("message",function(ev){
document.getElementById("h1cotent").innerHTML="从"+ev.origin+"那里传来的消息. "+ev.data;
ev.source.postMessage("你好,习大大",ev.origin);
},false);
</script>
</head>
<body>
<h1 id="h1cotent"></h1>
</body>
</html>

结果:

origin属性:这个是发送元,发送元与网站的url地址不是同一概念,发送原只包括域名与端口号,

为了不接收从其他源恶意发送过来的消息,最好对发送源做个检查.

source属性:可以获取消息发送的窗口对象.

这里所说的网页文档与网页文档之间的消息传送,针对的不仅仅是文本消息,

如果使用Json对象stringify方法将javascript对象转成文本,使用Json对象的parse方法

将文本还原问javascript对象,则任何javascript对象都可以通过这种方式在网页文档与文档之间,端口与端口之间,域与域之间相互传递.

Html5中的跨页面消息传输的更多相关文章

  1. HTML5学习之跨文档传输消息(七)

    新标准中提供了文档之间直接的消息传输API.而且不限制跨域消息传递! 发送消息使用的是Window对象的postMessage(data,targetURL)方法就可以了,但给哪个window对象发送 ...

  2. HTML5中的跨文档消息传递

    跨文档消息传送(cross-document messaging),有时候也简称为XDM,指的是来自不同域的页面间传递消息.例如,www.w3cmm.com域中的一个页面与一个位于内嵌框架中的p2p. ...

  3. 拾人牙慧篇之——基于HTML5中websocket来实现消息推送功能

    一.写在前面 要求做一个,后台发布信息,前台能即时得到通知的消息推送功能.网上搜了也有很多方式,ajax的定时询问,Comet方式,Server-Sent方式,以及websocket.表示除了定时询问 ...

  4. JS中实现跨域的方法总结

    今天早上在地铁看了点基础知识的考察题,看到了一个JS跨域的问题,仔细想了想自己脑子里竟然只剩下jsonp跨域和用nginx反向代理进行跨域,想着还有别的几种方法,就是想不起来,这个人呢,一上岁数这个脑 ...

  5. HTML5 跨文档消息传输

    对窗口对象的message事件进行监听 window.addEventListener("message", function(event) { // 处理程序代码 }, fals ...

  6. 使用HTML5中postMessage实现Ajax中的POST跨域问题

    HTML5中提供了在网页文档之间相互接收与发送信息的功能.使用这个功能,只要获取到网页所在窗口对象的实例,不仅仅同源(域+端口号)的web网页之间可以互相通信,甚至可以实现跨域通信. 浏览器支持程度: ...

  7. [转]html5: postMessage解决跨域和跨页面通信的问题

    [转]html5: postMessage解决跨域和跨页面通信的问题 平时做web开发的时候关于消息传递,除了客户端与服务器传值,还有几个经常会遇到的问题: 多窗口之间消息传递(newWin = wi ...

  8. 使用HTML5中postMessage 实现ajax中的POST跨域问题

    HTML5中提供了在网页文档之间相互接收与发送信息的功能.使用这个功能,只要获取到网页所在窗口对象的实例,不仅仅同源(域+端口号)的web网页之间可以互相通信,甚至可以实现跨域通信. 浏览器支持程度: ...

  9. HTML5中window.postMessage,在两个页面之间的数据传递

    HTML5中window.postMessage,在两个页面之间的数据传递 2015年11月3日 8536次浏览 关于postMessage window.postMessage虽然说是html5的功 ...

随机推荐

  1. OpenJudge计算概论-矩阵归零消减序列和

    矩阵归零消减序列和 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个n*n的矩阵( <= n <= ,元素的值都是非负整数).通过n-1次实施下述过程,可把这个矩阵转 ...

  2. javascript 函数节流方法

    函数节流可以缓解调用的次数,代码如下: function throttle(method,delay){ var timer=null; return function(){ var context= ...

  3. python join与split函数的用法举例

    python join 和 split方法: join用来连接字符串,split恰好相反,拆分字符串的. 来看有关join.split方法的例子 1,join用法的例子 复制代码 代码示例: > ...

  4. MySQL5.7.13源码编译安装指南(转)

    系统 CenterOs 6.5 1.安装依赖包(cmake make gcc等,其实好多都有了,不需要更新,为了防止世界被破坏,就装下) yum install gcc gcc-c++ -yyum i ...

  5. 微信公众号开发笔记(C#)

    这篇文章还不错,使用  .net , 对微信用户的想公众号发送的文字进行回复.比较简单,自己可以修改更复杂的回复. 微信公众号开发笔记(C#) 原文地址 需求分析 根据用户在微信上发送至价值中国公众号 ...

  6. Oracle备份与恢复之exp/imp

    获取帮助 exp help=y/imp help=y 工作方式 交互式 exp 命令行 exp user/pwd@dbname file=/oracle/test.dmp full=y 参数文件方式 ...

  7. [Hibernate] - Criteria Select

    使用Hibernate的Criteria做查询. 参考文档: http://docs.jboss.org/hibernate/orm/3.5/reference/zh-CN/html/querycri ...

  8. 【shell】通配符

    ‘’与“” [root@andon ~]# name='$date' [root@andon ~]# echo $name $date [root@andon ~]# name=abc [root@a ...

  9. C\C++拾遗------C#程序员重温C\C++之要点

    1.开发工具:建议采用VS2012及2013 1).因为VS2012对C++编码实现了自动编排格式(Ctrl E D) 2).提供智能感知(联想输入)功能 相比VS2010及以前版本对于习惯了智能感知 ...

  10. SDC文件模版

    # 1. Define clock create_clock -name "clk_in" -period 20ns [get_ports {clk_in}] # 2. tco c ...