用途:协助实现和排查宿主应用与嵌入式 Looker iframe 之间的交互通信。Looker 嵌入基于 HTML5 postMessage API 在宿主页面与 iframe 间传递消息,支持事件监控(如仪表板开始/结束运行、筛选器变化、页面导航)与双向控制(从宿主向 Looker 发送动作,触发运行、更新筛选器、改变布局)。
主要能力:监听事件时需在 window 上监听 message,并校验 event.origin 与 event.source,再解析 event.data。事件类型包括仪表板类(dashboard:loaded、dashboard:run:start、dashboard:run:complete、dashboard:filters:update、dashboard:tile:view、dashboard:tile:merge)、Look 与 Explore 类(look:ready、look:run:start/complete、explore:run:start/complete、explore:state:changed)、页面与系统类(page:changed、page:properties:changed、session:expired、env:client:dialog)。发送动作使用 iframe.contentWindow.postMessage(JSON.stringify(action), origin),常见动作有 dashboard:run、look:run、explore:run、dashboard:load、dashboard:options:set、env:host:scroll。
使用方式:推荐使用 Looker Embed SDK,通过 LookerEmbedSDK.createDashboardWithId(123).appendTo('#container').on('dashboard:run:complete', ...).build().connect() 建立连接;连接对象提供 send(message, params) 发送动作,sendAndReceive(message, params) 获取返回数据。
限制与注意:必须校验 event.origin 以防 XSS;旧版 Looker 可能发送字符串化 JSON,需兼容解析;dashboard:tile:view 等可取消事件可通过返回 { cancel: true } 覆盖默认行为;发送首个动作前应等待 page:changed 等就绪事件,避免竞态。具体版本差异与完整事件清单以官方资料为准,本资料未提供收费、价格与平台信息。