
PostMessage 接收触发器
PostMessage Received 触发器在您的 Labvanced 实验运行时接收到来自外部来源通过浏览器的 postMessage API 发送的传入消息时触发。使用它将您的研究与父网页、自定义应用程序或嵌入的外部网站连接,这些网站将数据直接发送到实验中。
概述
PostMessage Received 触发器可以在触发器选择菜单的 API/External Trigger 下找到。

常见用例
- 一个嵌入网站将用户交互事件(点击,表单完成)作为结构化的 postMessages 转发到 Labvanced。
- 一个父应用程序(例如自定义 LMS 或机构网页门户)发送消息以推进实验或传递参与者数据。
- 一个 JavaScript 驱动的集成,其中一个外部脚本触发实验逻辑中的特定点。
双向设置
在 Labvanced 和外部页面(例如 iFrame 或父应用程序)之间使用 postMessage 是一个 双向过程。Labvanced 处理一侧:这个触发器监听传入消息。另一侧是外部页面,必须进行编程以发送这些消息。
postMessage API 是一个标准浏览器功能。外部页面调用 window.parent.postMessage(data, targetOrigin) 向 Labvanced 发送数据。您或您的开发人员需要编写该代码。AI 编码工具也可以帮助您设置此项,通过提供上下文并快速生成代码(如有需要)。
一个常见模式是外部页面监听其自己的用户事件(例如点击、表单提交或注册),然后将每个事件作为 postMessage 转发到 Labvanced。每种事件类型可以使用 Key 字段标记标签(例如 click_event,signup_event),以便 Labvanced 可以分别过滤和响应每个事件。
工作原理
当实验运行时,Labvanced 监听传入的 postMessages。每当消息到达时,它会检查两个内容:
- 源域:此消息是否来自允许的来源?
- 键:此消息是否携带预期的键值(如果设置了一个)?
如果两个条件都满足,触发器将触发,消息有效载荷将作为 Message Content 在您的操作中可用。
外部页面负责发送消息。它通过在其自己代码中调用 window.parent.postMessage(data, targetOrigin) 来完成。它发送的 data 可以是任何东西:一个普通字符串,一个结构化值,或者一个事件标签。Labvanced 中的 Key 字段是您如何匹配该标签的特定值以区分不同类型的消息。
每种消息类型可以在 Labvanced 中具有其自己的专用事件。例如,一个事件使用 Key: click_event 当外部页面报告点击时触发,而另一个事件使用 Key: signup_event 当其报告表单提交时触发。
选择 PostMessage Received 后,将出现以下对话框:

触发器选项
| 菜单项 | PostMessage 接收触发器选项 |
|---|---|
Origin Domain | 指定哪个域可以向此触发器发送消息。默认值是 *,接受来自任何源的消息。要将触发器限制为特定来源,请将 * 替换为完整的源 URL(例如,https://yoursite.com)。建议在知道发送源时使用此选项。 |
Key | 输入您希望此触发器匹配的特定键值(例如,click_event,signup_event)。仅当传入消息携带该确切键值时,触发器才会触发。留空该字段以对任何传入消息触发,无论内容如何。 |
注意: 传入消息值将作为 消息内容 导出,并可以通过 值选择菜单 在操作中引用。
PostMessage 接收的触发器特定值
在选择 PostMessage Received 触发器后,您可以通过 Value-Select Menu 在后续操作中引用以下触发器特定值。
| 值 | 描述 |
|---|---|
Message Content | 接收到的 postMessage 的数据有效载荷。这是外部来源发送的值,可以存储在变量中,用于驱动逻辑,或记录为数据集的一部分。 |
Trigger Timestamp (Unixtime) | 触发器触发的时间戳,以 Unix 时间格式表示。 |
Trigger Time (From Frame Onset) | 从当前帧开始到触发器触发的时间(毫秒)。 |
进一步阅读和开放材料
- 发送 PostMessage 操作:将消息发送回外部来源的配对操作。
- 值选择菜单:如何在操作中引用触发器特定值。
- 事件概述:Labvanced 中触发器和操作逻辑系统的完整介绍。