如何将JS中的postMessage转发到另一个域中的iframe中的特定脚本

时间:2014-02-18 17:30:42

标签: javascript html message

我在iframe A中有iframe B,如下所示:

<iframe id="receiver">
 <script>
  top.getElementById("sender").addEventListener('message' receiveMessage, false);
  function receiveMesage(evt)
  {
   do something
  }
 </script>
 <iframe id="sender" src="SenderHtml">
</iframe>

在SenderHtml中我有:

 <script>
    top.postMessage("data, '*');

 </script>

首先,我似乎无法使其正常工作。 但更重要的是,iframe“receiver”可以位于包含更多数据的页面中,如何确保没有其他人能够捕获发送给它的数据?我无法控制其页面中的其余数据。我可以告诉SenderHtml中的脚本只能通过id发送到“收件人”框架吗? 另一个方面是2页在不同的域中。 感谢

1 个答案:

答案 0 :(得分:0)

我最后找到了答案。 问题是iframe中有代码,这是一个错误。 我添加了另一个重定向,它解决了问题(所有都在相应的html文件的正文中):

OuterFrame.html:

<iframe id="receiver" src="Listener.html">

Listener.html:

<script type="text/javascript">
       window.addEventListener('message', receiveMessage, false);
       function receiveMessage(evt) 
       {
           alert("got message: " + evt.data);
       }

</script>
<iframe id="sender" src="Sender.html"></iframe>

Sender.Html:

<script>
  parent.postMessage("data, '*');
</script>