我使用几行 javascript 来创建一个 iframe 元素,然后我想向它发送一条消息,如下所示:
function loadiframe (callback) {
var body = document.getElementsByTagName('body')[0];
var iframe = document.createElement('iframe');
iframe.id = 'iframe';
iframe.seamless = 'seamless';
iframe.src = 'http://localhost:3000/iframe.html';
body.appendChild(iframe);
callback();
}
loadiframe(function() {
cpframe = document.getElementById('iframe').contentWindow;
cpframe.postMessage('please get this message','http://localhost:3000');
console.log('posted');
})
然后,在http://localhost:3000/iframe.html(iframe 的源代码)内部是这样的:
<!DOCTYPE html>
<html>
<head>
<title>does not work</title>
<script>
window.addEventListener("message", receiveMessage, false);
function receiveMessage(event) {
if (event.origin == "http://localhost:3000") {
document.write(JSON.stringify(event));
document.write(typeof event);
}
}
</script>
</head>
<body>
</body>
</html>
但是什么都没有发生……我什至试图不使用安全检查来检查来源,但即使这样什么也没有发生……就像它从未收到消息一样……
我有某种异步问题吗?我试图确保在 postMessage 消失之前加载了 iframe...
EDIT1:此外,控制台上没有显示错误...
EDIT2:我在 Google Chrome 11 和 Firefox 4 中尝试过
先感谢您。