从 Service Worker 创建沙盒窗口

Yha*_*oer 5 postmessage sandbox google-chrome-extension service-worker

我有一个 Chrome 扩展程序,它需要一个沙箱,以便我可以使用自定义内容安全策略,并且还需要一个 Service Worker,以便我有一个持久运行的脚本。我希望 Service Worker 打开一个新的(沙箱)窗口,然后能够使用postMessage.

我尝试了三种方法来创建此窗口,但没有一种方法对我有用:

  • 我尝试了chrome.windows.create哪个能够创建窗口,但我无法访问postMessage(或者至少我不知道如何以postMessage这种方式访问​​)。
  • 我尝试window.open返回一个WindowProxy我可以调用的对象postMessage。然而,这仅适用于window上下文可用的情况,而在 Service Worker 中并非如此。
  • 我尝试过clients.openWindow,但最终出现错误“不允许打开窗口”。

无论如何,有没有办法创建一个(沙盒)窗口,允许我postMessage在 Chrome 扩展中的 Service Worker 中使用?