两个iframe之间的异步通信

艾伦说过,一切学习都是从模仿开始,我也不例外。下面我要说的是两个页面之间的通信问题。

假设现有a.html 需要与b.html进行数据交互,a通过iframe加载b.html

a.html

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />

</head>
<body>

<iframe src="b.html" style="width: 100%; height: 50%;"></iframe>
<button>click</button>
  <script  type="text/javascript">
  var btn = document.querySelector(‘button‘);
  btn.addEventListener(‘click‘,function(e){
       var message = ‘hello‘;
       window.parent.frames[0].postMessage(message, ‘*‘);
  });
  </script>
</body>
</html>

b.html:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <script type="text/javascript" src="pms.js"></script>
  <title>b</title>
</head>
<body>
 here is the content about iframe b
 <div></div>
</body>
  <script type="text/javascript">

      window.onload = function(){
          var div = document.querySelector(‘div‘);
          window.addEventListener(‘message‘,function(e){
            //div.innerHTML = e.data;
            if(e.data==‘hello‘){
              data.hello(e.data)
            }
          })
      }

  </script>
</html>

我们把消息数据放在一个单独的文件pms.js中。

pms.js:

var data = {
    hello : function(e){
        alert(55555)
    }
};

a是我们目标页面,现在要发一个hello的消息到b页面。b页面收消息之后,检查消息内容,如果是hello,则执行消息中指定的动作,比如运行一个函数。

原理就是这样,利用message事件进行消息传递,然后把消息的动作放在一个单独的文件中,如pms.js

在项目中有遇到类似情况的,请自行对照试验,就可以看到效果。

两个iframe之间的异步通信,布布扣,bubuko.com

时间: 2024-12-21 00:52:41

两个iframe之间的异步通信的相关文章

主页面、iframe之间调用以及传值

主页面.iframe之间的调用和传值,无非就是两个交互形式: 主页面与子页面的交互 子页面之间的交互 接下来要讲的是四种交互传值的方式:利用postMessage方法传值.DOM操作传值.URL方式传值.利用全局属性传值 利用postMessage方法传值 这种方式非常像事件绑定.监听.postMessage方法接收两个参数:一条消息.一个表示消息接收方来自哪个域的字符串.第二个参数对保障安全通信非常重要,可以防止浏览器把消息发送到不安全的地方. 下面是应用实例: //主页面发送消息 var m

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

HTML5中window.postMessage,在两个页面之间的数据传递 2015年11月3日 8536次浏览 关于postMessage window.postMessage虽然说是html5的功能,但是支持IE8+,假如你的网站不需要支持IE6和IE7,那么可以使用window.postMessage.关于window.postMessage,很多朋友说他可以支持跨域,不错,window.postMessage是客户端和客户端直接的数据传递,既可以跨域传递,也可以同域传递. 应用场景 我只

计算两个日期之间相差几天(Date类型与String类型互相转换)

一:计算两个日期之间相差几天 1 /** 2 * 3 */ 4 package com.hlcui.date; 5 6 import java.text.ParseException; 7 import java.text.SimpleDateFormat; 8 import java.util.Calendar; 9 import java.util.Date; 10 11 import org.junit.Test; 12 13 /** 14 * @author Administrator

两个页面之间的通信

今天要给大家说的是两个不同页面之间的通信,通过一个拖拽demo来模拟: 首先,写好基础的拖拽代码: <script> window.onload = function() { var oDiv = document.getElementById('div'); oDiv.onmousedown = function(ev) { var ev = window.event || ev; var disX = ev.clientX - oDiv.offsetLeft; var disY = ev.

js实现的计算两个时间之间的时间差

js实现的计算两个时间之间的时间差:在实际应用中,需要计算两个时间点之间的差距,一般来说都是计算当前时间和一个指定时间点之间的差距,并且有时候需要精确到天.小时.分钟和秒,下面就简单介绍一下如何实现此效果.代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.

javascript如何计算两个日期之间的时间间隔

javascript如何计算两个日期之间的时间间隔:有时候我们需要获取两个日期之间的时间间隔,下面是一段比较常用且兼容所有浏览器的代码,希望能够需要的带来一定帮助.代码如下: function NewDate(str) { str=str.split('-'); var date=new Date(); date.setUTCFullYear(str[0], str[1] - 1, str[2]); date.setUTCHours(0, 0, 0, 0); return date; } fun

golang取两个数字之间的随机数

//取两个数字之间的随机数int64 func RandInt64(min, max int64) int64 { if min > max { return max } return rand.New(rand.NewSource(min)).Int63n(max) }

确定两个日期之间的几天

1 package com.lovo; 2 3 import java.text.ParseException; 4 import java.text.SimpleDateFormat; 5 import java.util.Date; 6 import java.util.Scanner; 7 8 public class Day { 9 public static void main(String[] args) { 10 final long MILLIS_OF_DAY = 24 * 60

&lt;两台主机之间日志的同步&gt;

首先要知道两台主机之间同步文件udp虽然安全性不高,但是它的同步速率远远高于tcp.这点是不可否认的. 我们以简单的为例: 服务端: 允许别的主机可以把日志同步到自己的主机上来. # vim /etc/rsyslog.conf $ModLoad imudp  //开启udp协议,添加udp模块. $UDPServerRun 514 /etc/init.d/rsyslog restart 重启使配置生效 # tail -f /var/log/messages  //动态监控日志 客户端 把日志往哪