所以我在我的项目中尝试了几件事来发送跨域变量。 我点击了一个按钮,然后打开一个新的浏览器选项卡。
$('#btn').on('click', function(e) {
var popup = window.open("other-domain.html", "_blank");
window.popup.onload = function() {
popup.postMessage(variableToSend, '*');
}
// I even tried doing this directly, without the onload
popup.postMessage(variableToSend, '*');
});
从我的其他域名我这样做:
(function($) {
var listener = function(event) {
console.log(event.data);
}
var setupEvents = function() {
if(window.addEventListener) {
window.addEventListener("message", listener, false);
}else{
window.attachEvent("onmessage", listener);
}
}
setupEvents();
})(jQuery);
我从未从父窗口收到任何内容,因此永远不会进入侦听器功能。
你知道可能出现什么问题吗?已经和它斗争了2天了。
提前致谢,
增加: 我尝试从其他域窗口(子)
执行此操作window.parent.postMessage('Hi!', '*');
它正确收到消息。看起来我错过了什么,也许是某个地方的超时?