我只是尝试在浏览器中从其他窗口接收postmessage。 所以我开了2个网站:example1.com和example2.com。我在两个标签上打开了镀铬检查员。
在一位检查员中,我放置了代码:
window.addEventListener('message', function(){console.log('FIRED')})
第二个:
window.postMessage('Hello!', '*');
如果它们是不同的标签甚至相同的域,则不会引发火灾。只有当它是相同的铬检查员时才会触发。
那我做错了什么?
答案 0 :(得分:2)
您无法在标签之间任意发帖。 postMessage
method is on window
's prototype,因此您需要有效的Window
发帖。
如果您要发布到当前窗口的父母或孩子(并且可以使用window.parent
或获取子框架的上下文`)或已打开一个新窗口并仍然保持引用它,然后您可以跨框架或选项卡发布。但是,您不能只发布到同一浏览器中打开的任意选项卡,因为这将是一个严重的安全问题。