javascript postMessage - 测试消息的接收



我使用postMessage在主机和我的域的iframe之间进行通信。

这是 hostdomain.org 上的代码:

function rec_tyd(json_var)
{
  //if i decode and alert json_var there i get the content.
  var win = document.getElementById("tyd_frame").contentWindow;
  win.postMessage(json_var, "http://multipress.fr/tyd//module/pro_mod.php");
}
<iframe src="http://example.org/myiframe.php" width="500" height="200" 
name="tyd_frame" id="tyd_frame" style="border:1px solid black;"</iframe>

json_var是一个 JSON 对象。

我的域名上的代码,example.org/myiframe.php 是:

if (!window.addEventListener)   // IE
  {window.addEventListener = function (type, listener, capt) {
  attachEvent("on"+type, function(){listener(event)});}
}
addEventListener("message", function(e) {       
  var final = JSON.parse(e.data);
  alert(final.id_product);
  alert(final.id_company);
}, false);

基本上,一切都在工作,除了:

  • 第一次加载时,我在 iframe 中没有得到任何东西
  • 当我重新加载一次时,我得到值
  • 如果我刷新主机页面,我什么也得不到。

在Chrome和FireFox中也是如此:刷新不起作用,但是如果进入地址栏并按回车键,它就可以工作。除了第一次。

我检查了我的 JSON 对象,并在发布消息之前得到了它。真的是在iframe中,我什么也得不到。

所以我的问题是:我如何测试我得到了一些东西?我的代码有误吗?

目前我实际上正在同一个域上工作,但它将在不同的生产域上。

注释中解决:)

==>文档准备好后停止启动我的帖子消息,但将其置于iframe的加载状态,似乎问题已解决!谢谢

相关内容

  • 没有找到相关文章

最新更新