Html5 – 跨浏览器Iframe postmessage – 孩子父母?

我一直在遵循这个教程 – http://www.youtube.com/watch?v=R2hOvZ7bwXU ,它基本上解释了如何使用postmessage在iframe和父母之间安全地传递消息 – 你基本上是这样的 – http://html5demos.com/postmessage2

我的问题是,我需要它的工作方向相反(孩子父母),不知道如何定位父窗口。

这是我的接收器代码(在父) –

function handlingMsg(e) {alert("works") if(e.origin == "http://uc.dialogue.net") { var blah = e.data; alert(blah); } else{alert("error");} } addEventListener("message",handlingMsg, true); 

这是由一个简单的forms(在子)触发的发件人function –

  var text=$('.srchInput').val(); window.parent.postMessage(text, "http://uc.dialogue.net"); 

我应该以不同的方式瞄准父母吗?

干杯保罗

 var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent"; var eventer = window[eventMethod]; var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message"; // Listen to message from child window eventer(messageEvent,function(e) { var key = e.message ? "message" : "data"; var data = e[key]; //run function// },false); 

得到它与上面的父页面和以下在子页面上工作 –

 parent.postMessage("loadMyOrders","*"); // `*` on any domain 

从这里复制代码。

被接受的答案的一个现代,简化的版本(丢弃传统ie8支持,并且使代码更加可读):

 window.addEventListener('message',function(e) { var key = e.message ? 'message' : 'data'; var data = e[key]; //run function// },false); 

请参见: