加载iframe后,如何在不同的域中使用postMessage?

时间:2019-04-04 23:16:10

标签: javascript iframe cross-domain same-origin-policy postmessage

我正努力将数据从父域传递到另一个域的iframe。

我阅读了我可以使用postMessage避免相同策略起源的信息,但我仍然收到以下消息: Failed to execute 'postMessage'... The target origin provided does not match the recipient window's origin

我试图将数据从父域传递到iframe,再从iframe传递给父域。

要发送消息的代码:

window.onload = function() {
    var receiver = document.getElementById('Iframe').contentWindow,

    function sendMessage(e) {
        receiver.postMessage('Hi from Parent Domain!', 'Iframe-Domain.com');
    }
    receiver.addEventListener('pageshow', sendMessage);
}
  

我希望在加载特定的iframe页面时发送邮件。

接收消息的代码

<div id="message">
</div>

window.onload = function() {
   var message = document.getElementById('message');

  function receiveMessage(e) {
    if (e.origin !== "Parent-Domain.com")
      return;

    message.innerHTML = "Message Sent: " + e.data;
  }
  window.addEventListener('message', receiveMessage);
}

注意:

  • 在Nginx上运行的父域
  • 来自Webapp(SalesForce)的iframe域,我可以在其中注入一些代码,但不能更改元素,例如添加“ Onclick”按钮。

谢谢

0 个答案:

没有答案