码迷,mamicode.com
首页 > 其他好文 > 详细

两个iframe之间的异步通信

时间:2014-07-08 00:24:16      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:style   blog   java   color   文件   width   

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

假设现有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

两个iframe之间的异步通信

标签:style   blog   java   color   文件   width   

原文地址:http://www.cnblogs.com/afrog/p/3829910.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!