内部Chromium postMessage事件

时间:2019-01-07 18:22:02

标签: javascript google-chrome chromium postmessage

我有一个使用postMessage在主机页面和iframe(不同域)之间进行通信的应用程序(Vanilla JS / Weback + Babel)。

我注意到,在iOS 12 Chrome浏览器上,确实发生了一个事件,该事件会在按钮单击之类的交互时进入我的监听器。

事件数据如下:

{ "type":"org.chromium.contextMenuMessage", "requestId":"CC0C490584C989ACE524F0ED69F418DD", "x":245, "y":399.5 }

是什么?我找不到任何可以解释这种行为的资源。

编辑:而且,关于此事件的最奇怪的事情是,它似乎出现在生产环境中,而不是在本地主机上。

2 个答案:

答案 0 :(得分:1)

它仅触发跨域消息。如果父母和孩子在同一个域中,则不会发生。至少这是我所发现的,可悲的是,我也坚持寻找更多信息。

答案 1 :(得分:1)

我在自己的应用中看到了非常相似的内容。我正在从iOS v12和Chrome v76.0.3809上的Chrome接收到跨域iframe的邮件。我收到的消息内容不同,更多形式为:

{
    iv: e8LCrn94cSbycO3i
    payload: daPXeVR5GBg2IffLQ/2fuTmVGzJLnM++z2nC+cjR5kGcG1VhIBHni6tIrw94Gg+KvyMUMVNY3mjfJ9jMhT4g8fcnngZkiLirqoUOqMagVY3gaEzYBCb4ZVgtRelv/paccs7hc/rMi+cDr2eCOSzzKQ6fpHU=
    target_frame_id: 419b482d9b6c4565f8dd4e2f470a518
    type: org.chromium.encryptedMessage
}

我不确定Chrome专门用于什么数据,它最有可能与附加组件通信。

这里的重点是,如果您正在使用以下方式在iframe中监听消息:

window.addEventListener('message', callback);

然后您将收到通过postMessage 发送的所有邮件,您可以自行过滤。页面上的任何代码(包括浏览器)都可以发送message事件。