InboxSDK registerComposeViewHandler对内嵌回复不触发问题排查
InboxSDK v2 内嵌回复不触发registerComposeViewHandler问题
我在使用InboxSDK v2开发Gmail Chrome扩展时遇到了问题:registerComposeViewHandler在点击「弹出回复」(浮动撰写窗口)时工作正常,但在对话中打开内嵌回复时从未触发。根据SDK文档,sdk.Compose.registerComposeViewHandler应该在任何撰写视图创建时被调用,包括内嵌回复场景。
最小复现代码(内容脚本)
// content.js (function() { InboxSDK.load(2, 'sdk_xxx').then((sdk) => { console.log('SDK ready'); // 立即注册处理程序 sdk.Compose.registerComposeViewHandler((composeView) => { console.log('ComposeView detected') // 内嵌回复时无日志输出 }); }); })();
清单文件片段
{ "manifest_version": 3, "name": "My Extension", "version": "1.0.0", "permissions": [], "host_permissions": ["https://mail.google.com/*"], "content_scripts": [ { "matches": ["https://mail.google.com/*"], "js": ["content.js"], "run_at": "document_end" // 也尝试过"document_start" } ], "web_accessible_resources": [{ "resources": ["*"], "matches": ["https://mail.google.com/*"] }] }
预期结果
- 处理程序应在所有撰写场景触发,包括对话内打开的内嵌回复。
实际结果
- 内嵌回复:处理程序不触发(无控制台日志)。
- 弹出回复:处理程序正常触发(控制台日志出现)。
已尝试的解决方法
- 尽早注册撰写处理程序:在
InboxSDK.load解析后立即注册,无额外异步延迟。 - 切换
run_at参数:分别尝试了document_start和document_end。 - 确保处理程序仅注册一次:无重复注册情况。
- 使用
Conversations.registerThreadViewHandler枚举现有撰写视图:
sdk.Conversations.registerThreadViewHandler((threadView) => { try { threadView.getComposeViews().forEach(cv => console.log('Existing CV', cv)); } catch {} threadView.on('reply', ({composeView}) => console.log('Reply CV', composeView)); threadView.on('forward', ({composeView}) => console.log('Fwd CV', composeView)); });
即便如此,内嵌回复仍未触发原始的撰写处理程序。
- 排除权限/设置干扰:确认没有功能标志、设置或许可检查阻止注册,处理程序注册是无条件执行的。
- 纯净环境测试:使用全新Chrome配置文件,无其他Gmail扩展干扰。
疑问
是否存在已知问题导致内嵌回复在某些条件下不触发registerComposeViewHandler?是否需要针对内嵌回复使用不同的事件钩子,或等待特定Gmail状态后才能检测到?希望能获得相关指引或可运行的内嵌回复复现代码。
内容的提问来源于stack exchange,提问作者hlaliberte
相关产品推荐
相关产品推荐

