iframe 商品库跳转按钮事件对接
更新时间:2026-05-27 10:14:52
最近更新时间:2026年5月27日
适用场景
本文适用于接入方通过 iframe 将保利威 SaaS 观看页嵌入到外部 H5 页面,并希望在用户点击商品库商品按钮后,由外部 H5 页面接收商品点击事件的场景。
典型诉求包括:
- 接入方 H5 页面通过 iframe 承载保利威 SaaS 观看页。
- 观看页内展示商品库商品。
- 用户点击商品按钮后,外部 H5 页面需要获取当前商品信息。
- 接入方希望在外部 H5 页面中自行处理埋点、自定义弹窗、跳转或小程序消息转发。
该事件是浏览器窗口间的 postMessage 通信。外部 H5 页面不监听该事件时,不影响商品库原有购买或跳转逻辑。
事件格式
用户在 iframe 内点击商品按钮后,商品库会向 iframe 父页面发送以下事件:
{
source: 'polyv-product-ui',
event: 'clickProductButton',
data: {
productData: {
// 当前点击的商品信息
},
scene: 'productList'
}
}
字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
source |
string |
固定为 polyv-product-ui,用于标识事件来源。 |
event |
string |
固定为 clickProductButton,表示商品按钮点击事件。 |
data.productData |
object |
当前点击的商品信息。 |
data.scene |
string |
商品按钮点击来源场景。 |
scene 内置取值如下:
| scene | 场景 |
|---|---|
productList |
商品列表 |
productDetail |
商品详情 |
bigCard |
大卡片 |
smallCard |
小卡片 |
H5 页面监听方式
监听代码需要写在承载 iframe 的外部 H5 页面中。建议先校验消息来源和事件类型,再处理商品数据。
window.addEventListener('message', function (event) {
const message = event.data || {};
if (message.source !== 'polyv-product-ui') return;
if (message.event !== 'clickProductButton') return;
const productData = message.data && message.data.productData;
const scene = message.data && message.data.scene;
console.log('收到商品按钮点击事件:', productData, scene);
// 可在这里执行接入方自己的业务逻辑
// 例如:埋点、自定义弹窗、自定义跳转、通知小程序等
});
如果外部 H5 页面只允许特定观看页域名发送消息,建议结合实际域名校验 event.origin,避免处理非预期页面发送的消息。
小程序 web-view 场景
如果接入方式是“小程序 <web-view> 打开接入方 H5 页面,接入方 H5 页面再通过 iframe 嵌入保利威 SaaS 观看页”,监听代码仍应写在接入方 H5 页面中。小程序页面本身不能直接监听 iframe 内部页面发送的 window.postMessage。
如需继续通知小程序,可在接入方 H5 页面收到事件后调用 wx.miniProgram.postMessage 转发。
window.addEventListener('message', function (event) {
const message = event.data || {};
if (message.source !== 'polyv-product-ui') return;
if (message.event !== 'clickProductButton') return;
if (window.wx && window.wx.miniProgram) {
window.wx.miniProgram.postMessage({
data: {
source: 'polyv-product-ui',
event: 'clickProductButton',
productData: message.data && message.data.productData,
scene: message.data && message.data.scene,
},
});
}
});
在该场景下,如果接入方希望完全由外部 H5 页面承接商品按钮后的跳转链路,建议不要配置商品的浏览器链接,避免与外部 H5 的自定义处理逻辑重复。
验证方式
- 在外部 H5 页面中通过 iframe 嵌入保利威 SaaS 观看页。
- 在外部 H5 页面中添加
window.addEventListener('message', handler)监听。 - 在 iframe 内点击商品库商品按钮。
- 确认监听器收到
source: 'polyv-product-ui'、event: 'clickProductButton'的消息。 - 确认
data.productData中包含当前商品信息,data.scene能区分点击来源。
postMessage 是浏览器窗口间通信,不是网络请求,因此无法通过 Charles 等抓包工具直接判断是否发送成功。建议通过浏览器控制台日志或接入方 H5 页面中的调试信息进行验证。
