我正在尝试使用easyXDM在父文档和子iframe之间进行通信(从不同的域加载 - 亚马逊)。 iframe src是一个oeuth签名的URL,并具有以下代码与加载它的父文档进行通信:
socket = new easyXDM.Socket({
remote: "http://localhost:56789/hitch.html", /* parent document */
remoteHelper: "http://localhost:56789/easyXDM/name.html",
onMessage: function(message, origin){
alert("Received '" + message + "' from '" + origin + "'");
},
onReady: function() {
socket.postMessage("Yay, it works!");
}
});
上述代码保存在文档的头部。
在父母(hitch.html)中:
var transport = new easyXDM.Socket(/** The configuration */{
local: "/easyXDM/name.html",
swf: "/easyXDM/easyxdm.swf",
onMessage: function(message, origin){
transport.postMessage("This is a message received from " + location);
}
});
当我从父文档中的amazonS3加载子iframe时,easyXDM在子iframe中创建了另一个iframe,其中src设置为“http:// localhost:56789 / hitch.html?xdm_e = ...”。这导致整个事情在一个循环中重复 - 父母再次尝试加载子iframe等等。
我正在测试具有postMessage支持的Firefox 9.0。实际的消息正在正确发送,我可以看到消息框。除此之外,在初始化easyXDM.socket时,它还会在父文档中抛出“url is undefined or empty”错误,但它似乎不会影响其他任何内容......
谢谢,
答案 0 :(得分:8)
我认为你刚刚倒退了逻辑。文档说得很清楚:
“使用easyXDM时,首先加载消费者文档,然后再使用 easyXDM加载提供商。“
“consumer”是父文档,easyxdm加载“提供者”,即子iframe。