
发送 PostMessage 动作
Send PostMessage 动作使用浏览器的 postMessage API 从您正在运行的 Labvanced 实验向外部目标发送消息,例如父网页、自定义应用程序或嵌入的框架。
概述
该动作在动作选择菜单中列在 API Actions 下。

常见用例
- 通知父应用程序(例如 LMS 或机构门户),当参与者达到某个点或完成某项任务时。
- 实时将变量值(例如分数、响应或条件标签)传递到外部系统。
双向设置
在 Labvanced 和外部页面(例如 iFrame 或父应用程序)之间使用 postMessage 是一个 双向过程。Labvanced 处理一方:该动作发送消息。另一方面是外部页面,必须编程以接收消息。
postMessage API 是浏览器的标准功能。外部页面需要一个 window.addEventListener('message', handler) 监听器来接收来自 Labvanced 的消息。该监听器还应该根据域进行过滤,检查消息来源是否是 Labvanced,以便只处理来自可信来源的消息。您或您的开发人员需要编写该代码。如果需要,AI 编码工具可以帮助快速生成代码。
工作原理
当此动作触发时,Labvanced 向目标窗口发送一个 postMessage。消息会传送给任何在 Destination Domain 上使用 window.addEventListener('message', handler) 进行监听的页面。
消息有效载荷包含 Value to send。如果设置了 Key,那么它会包含在有效载荷中,以便接收方可以识别消息类型并进行相应处理。
外部页面负责处理消息。其监听器在执行操作之前应检查消息来源,以确保仅响应来自 Labvanced 发送的消息。
选择 Send PostMessage 后,将出现以下配置:

动作选项
| 菜单项 | 发送 PostMessage 动作选项 |
|---|---|
Destination Domain | 指定应该接收消息的目标来源。默认值为 *,即发送到任何来源。当知道目标时,使用完整的目标 URL(例如 https://yoursite.com)替换 *。建议为安全起见指定确切域。 |
Key | 将标识符键附加到输出消息。这将消息有效载荷结构化为 Key: value,接收方可以用来区分不同类型的消息。如果不需要键,则留空。 |
Value to send | 定义要包含在输出消息中的数据。单击编辑图标打开 Value-Select Menu,并指定要发送的内容:常量值、Labvanced 变量或表达式。 |
注意: 接收消息的系统(父页面或外部应用)必须实现 window.addEventListener('message', ...) 监听器,以处理来自 Labvanced 的传入 postMessage。
进一步阅读和开放材料
- PostMessage Received Trigger: 监听来自外部来源的传入 postMessage 的配对触发器。
- Value-Select Menu: 如何使用变量、常量或表达式定义要发送的值。
- Labvanced Web Bridge Extension: 关于 postMessage 如何用于与嵌入的外部网站进行通信的背景知识。
- Events Overview: Labvanced 中触发器和动作逻辑系统的全面介绍。