使用easyXDM在父文档和从不同域(amazon)加载的子iframe之间进行通信
Using easyXDM to communicate between parent document and child iframe loaded from a different domain (amazon)
我试图使用easyXDM在父文档和子iframe(从不同的域加载- amazon)之间进行通信。iframe src是一个oauth签名的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!");
}
});
以上代码保存在文档的头部部分。
In parent(希契。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,等等。
我在Firefox 9.0上测试,它支持postMessage。实际的消息正在正确发送,我可以看到消息框。除此之外,在初始化easyXDM时,它还会在父文档中抛出"url未定义或为空"错误。但它似乎不影响其他任何东西…
谢谢,
我想你把逻辑搞反了。文档说得很清楚:
"当使用easyXDM时,您首先加载消费者文档,然后让easyXDM加载提供程序。"
"消费者"是父文档,而easyxdm加载的"提供者"是子iframe。
ref - https://github.com/oyvindkinsey/easyXDM
相关文章:
- 使用php脚本验证访问者的年龄,并在不刷新的情况下根据结果加载iframe
- 使用Javascript(或jQuery)加载iframe内容
- Internet Explorer重新加载IFrame
- Fine Uploader-未收到来自已加载iframe的有效消息
- 使用本地生成的代码通过 JavaScript 加载 IFrame
- 加载iframe时激发的事件
- 动态渲染 .mht 文件,无需加载/iframe/嵌入
- 如何在选择列表项时重新加载iframe
- 如何使用JavaScript在iframe中重新加载iframe
- 在featherlight.js中延迟加载iFrame
- 实时在更改时重新加载iframe脚本
- 如何在不闪烁的情况下加载Iframe
- 如何按时间间隔重新加载Iframe内容,使其不会闪烁
- 设置 URL 以在 Django 模板中加载 iframe
- 在离开页面之前加载 iframe
- 加载 Iframe src,并从水平下拉菜单中进行选择
- 同时加载 iframe 并重置文档位置
- 单击按钮时重新加载 iframe 内容(本地 HTML)
- 单击元素时重新加载 iframe src
- 在可见时加载 iframe