由于跨域问题,我在 iframe 到具有不同域的 iframe 之间使用 postMessage 时遇到问题。我的代码适用于父母对孩子,反之亦然。但我不能将消息从一个 iframe 传递到另一个 iframe。
有什么解决办法吗?
编辑:这些是代码 - iframe1 - 我在 jsbin.com 上添加了它(它将在 iframe1 上发送消息,反之亦然)
var button = document.getElementById('b2');
var input = document.getElementById('m2');
var origin = origin || window.location.origin;
button.onclick = function() {
window.parent.postMessage(input.value, "*");
};
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";
eventer(messageEvent, function(e) {
document.getElementById("display").innerHTML = e.data;
},false);
iframe2
var submit = document.getElementById('b2');
var input = document.getElementById('m2');
submit.onclick = function() {
var origin = origin || window.location.origin;
window.parent.postMessage(input.value, origin);
};
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";
eventer(messageEvent, function(e) {
output = e.data;
document.getElementById('display').innerHTML = e.data;
},false);
我只是在接收和发送消息时做了同样的事情。但我总是在控制台中收到此错误。无法将消息发布到http://jsbin.com。收件人来源http://mypersonaldomain.com
我已经尝试了两个不同的域,但在父子和子父之间,但是不能用不同的域对 iframe 进行 iframe,这两个 iframe 是否可以在不在父 html 中添加一些代码的情况下进行通信?
谢谢你的评论!