首页 > 解决方案 > 内部 Chromium postMessage 事件

问题描述

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

我注意到,在 IOS 12 Chrome 浏览器上确实会发送一个事件,该事件会在我的侦听器中发生按钮点击等交互。

事件数据如下所示:

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

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

编辑:另外,这个事件最奇怪的是,它似乎出现在生产环境中,但不在本地主机上。

标签: javascriptgoogle-chromechromiumpostmessage

解决方案


我在我的应用程序上看到了非常相似的东西。我正在从 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事件的能力。


推荐阅读