来自控制台跨域的Postmessage示例

时间:2016-05-27 15:15:20

标签: javascript postmessage

我只是尝试在浏览器中从其他窗口接收postmessage。 所以我开了2个网站:example1.com和example2.com。我在两个标签上打开了镀铬检查员。

在一位检查员中,我放置了代码:

window.addEventListener('message', function(){console.log('FIRED')})

第二个:

window.postMessage('Hello!', '*');

如果它们是不同的标签甚至相同的域,则不会引发火灾。只有当它是相同的铬检查员时才会触发。

那我做错了什么?

1 个答案:

答案 0 :(得分:2)

您无法在标签之间任意发帖。 postMessage method is on window's prototype,因此您需要有效的Window发帖。

如果您要发布到当前窗口的父母或孩子(并且可以使用window.parent或获取子框架的上下文`)或已打开一个新窗口并仍然保持引用它,然后您可以跨框架或选项卡发布。但是,您不能只发布到同一浏览器中打开的任意选项卡,因为这将是一个严重的安全问题。