Chrome扩展:如何在侧边栏显示沙箱页面并实现消息收发?
Chrome侧边栏沙箱页面的消息通信问题
我需要在Chrome侧边栏中显示沙箱页面(sandboxed page),并实现与该页面的消息收发。已知沙箱页面的通信只能通过window.postMessage()实现,但我无法获取侧边栏(sidePanel)的window对象。
细节说明
- 已成功将沙箱页面设置为侧边栏的显示内容,但无法实现消息收发
- 谷歌提供的沙箱页面示例仅展示了插入
<iframe/>的方式,且该iframe仅用于返回字符串而非显示内容,但我需要沙箱页面正常展示 - 不确定侧边栏的
window对象是否与当前标签页的window为同一对象,也不清楚如何获取它
当前临时实现方案
我目前的临时解决方法是创建sidePanel.html页面,在其中嵌入一个<iframe/>,将其src指向sandbox.html,并设置宽高为100%以填满侧边栏。通过以下代码实现通信:
sidePanel.html 中的发送逻辑:
document.getElementById('theFrame').contentWindow.postMessage(message, '*');
sandbox.html 中的监听与回复逻辑:
// 设置消息事件监听器 window.addEventListener('message', function (event) { const command = event.data.command; // ... 此处为具体的消息处理逻辑 event.source.postMessage({ result: result }, event.origin); });
但该方案并不理想,我怀疑是否存在操作误区——难道在侧边栏中实现可收发消息的沙箱页面,真的只能通过嵌套<iframe/>的方式吗?
内容的提问来源于stack exchange,提问作者John Gordon
相关产品推荐
相关产品推荐

