为什么我的window postMessage不起作用?不使用iframe

时间:2016-04-12 13:56:47

标签: javascript jquery

所以我在我的项目中尝试了几件事来发送跨域变量。 我点击了一个按钮,然后打开一个新的浏览器选项卡。

$('#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!', '*');

它正确收到消息。看起来我错过了什么,也许是某个地方的超时?

0 个答案:

没有答案