javascript postMessage-测试消息的接收

javascript postMessage-测试消息的接收,javascript,iframe,cross-domain,postmessage,Javascript,Iframe,Cross Domain,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://multi

我使用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>
基本上,一切正常,除了:

在第一次加载时,我在iframe中没有得到任何东西 当我重新加载一次时,我得到值 如果我刷新主机页,我将再次一无所获。 在Chrome和FireFox中也是一样:刷新不起作用,但如果进入地址栏并按enter键,它就会起作用。除了第一次

我检查了我的JSON对象,在postmessage之前得到了它。我真的什么也得不到

所以我的问题是:我如何测试我得到了什么?我的密码有错吗


目前我实际上在同一个域上工作,但它将在另一个域上进行生产。

在注释中解决:


==>当文档准备就绪时停止启动my postMessage,但将其置于iframe的onload状态,问题似乎已得到解决!谢谢

在发送/接收邮件之前是否已加载这两个页面?您没有包含足够的代码来显示消息的发送时间。我猜是因为如果解码,则在发送消息之前通知rec_tyd中的内容,我会得到值。但您认为可能是我发送消息时iframe未加载?我怎么能测试呢?@WPCoder:你是对的。当文档准备就绪时,我停止启动postMessage,但将其置于iframe的onload状态,似乎问题已经解决了!Thanks@pierreaurelemartin您可以将其添加为以下问题的答案,以便其他人更容易找到:
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);