我需要测试一种情况,即我有一个父窗口托管一个空的 iframe。我需要使用 iframe 作为父资源和跨域资源之间的代理。我创建了一个简单的jsfiddle,它应该尝试将消息从父级发布到子 iframe。
我尝试在父母的 javascript 中做的是为子 iframe 提供一个处理程序,但对于我的生活,我无法弄清楚让它正常工作的语法。我尝试使用 addEvent 助手从我在 Modern Javascript Develop and Design 中看到的示例中正确添加事件(对于 IE 和其他所有人):
addEvent: function(obj, type, fn) {
if (obj && obj.addEventListener) {
obj.addEventListener(type, fn, false);
} else if (obj && obj.attachEvent) {
obj.attachEvent('on' + type, fn);
}
}
我目前尝试为 onmessage 设置处理程序的方式如下:
document.getElementById("frame1").onmessage = function(e) {
alert(e.data);
};
我还认为也许我需要访问元素的 contentWindow,但 onmessage 似乎不存在。
是否有访问 iframe 的属性或方法,使其看起来像一个窗口并且会有一个可以处理的 onmessage?
更新
我可以看到 onmessage 的值设置为一个函数,甚至可以通过 alert(...) 来查看它确实是我想要的函数,但是当在子 iframe 上调用 postMessage 时,我没有看到它被调用。