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 頁面中的除錯資訊進行驗證。
