Looker嵌入JavaScript事件失效问题求助
Looker嵌入仪表盘回调事件失效排查方案
你遇到的问题是嵌入Looker仪表盘时,dashboard:run:loaded、dashboard:run:complete、page:properties:changed这些回调事件完全失效,以下是几个常见排查方向:
检查SDK版本兼容性
部分旧版Looker Embed SDK对事件体系的支持不完善,建议确认当前使用的是v3.x及以上的稳定版本。可以通过在控制台执行LookerEmbedSDK.version查看版本号,若版本过低,升级到最新版再测试。验证嵌入权限与跨域配置
- 确保生成的嵌入令牌(Embed Token)拥有目标仪表盘的访问权限,且令牌未过期。令牌权限不足会导致仪表盘无法正常加载,事件自然无法触发。
- 检查
withParams中配置的embed_domain是否与Looker实例后台设置的「允许嵌入域名」完全一致,跨域配置不匹配会阻断事件的跨窗口传递。
排查代码拼写与细节
注意到你描述里写了dashboard:run:compolete(拼写错误,正确应为complete),虽然代码里的监听事件是正确的,但要确认整个代码逻辑中没有类似拼写失误,避免因事件名称不匹配导致监听失效。确认DOM容器的存在时机
确保调用appendTo(#${data.containerId})时,对应的DOM容器已经在页面中渲染完成。如果容器还未加载就执行嵌入初始化,会导致仪表盘挂载异常,进而影响事件触发。可以把初始化代码放在DOM加载完成的钩子(比如DOMContentLoaded事件)中执行。查看控制台错误信息
打开浏览器开发者工具的「控制台」面板,检查是否有跨域错误、令牌无效错误或SDK初始化失败的报错信息,这些底层错误会直接导致嵌入流程中断,事件监听自然无法生效。
附上你的代码片段:
LookerEmbedSDK.createDashboardWithId(data.lookerId) .withParams({ ... }) .appendTo(`#${data.containerId}`) .on('dashboard:run:loaded', () => { console.log('dashboard loaded---'); }) .on('dashboard:run:start', () => { console.log('Starting create dashboard---'); }) .on('dashboard:run:complete', () => { //TODO: Create next dashboard console.log('Continue to next'); }) .on('page:properties:changed', e => test(e.height, testA(data.containerId))) .build() .connect() .then(setupDashboard) .catch((error: Error) => { console.error('An unexpected error occurred', error); }); };
内容的提问来源于stack exchange,提问作者Eddy Huang
相关产品推荐
相关产品推荐

