如何使用Javascript postMessage使用不同的协议将iframe外部的元素作为目标

时间:2014-09-16 09:31:44

标签: javascript jquery iframe postmessage

我在iframe中有一个按钮,我希望它会在点击时触发另一个按钮,该按钮位于iframe之外。

这是我一直试图解决的一段代码。

HTML

<body>
 <iframe id="layer-frame" src="https://somepage.com">
  <a href="https://page2.com" target="_blank" id="js-gopage2" class="js-iframepostmsg" alt="CLICK HERE TO Edit your profile">Edit your profile</a>
 </iframe>
 <div>
  <a class="close" href="#">Close<span></span></a>
 </div>
</body>
在父html中

window.addEventListener("message", receiveMessage, false);

function receiveMessage(event)
{
 if(event.data == "click!") {
  $('a.close').trigger('click');
 }
}
iframe中的

var targetOrigin = window.location.host;
top.window.postMessage("click!", targetOrigin);

1 个答案:

答案 0 :(得分:0)

targetOrigin = window.location.host将为您提供发布的网页的主机名,但是:

  

targetOrigin
  指定要分派的事件otherWindow的来源必须是什么

  

otherWindow文档的方案,主机名或端口与targetOrigin

中提供的方案,主机名或端口不匹配

因此您需要提供完整的来源(例如http://example.com:234),而不仅仅是主机名。

如果您不关心允许哪个来源阅读邮件,请使用"*"