vscode 当扩展主机重启时,如何处理WebView视图?

nfs0ujit  于 6个月前  发布在  Vscode
关注(0)|答案(2)|浏览(53)

以下是翻译后的文本内容:

在Microsoft/vscode-pull-request-github#4872(评论)中,我看到了以下情况:

  1. 打开一个文件夹
  2. 有一个扩展程序创建了一个webview视图
  3. 保持webview视图打开
  4. 在工作区中添加一个文件夹,这会导致扩展主机重新启动。
  5. 扩展程序的deactivate被按预期调用。在deactivate中,扩展程序的dispose提供了webview视图。
  6. 使用这个dispose,我本以为webview视图会隐藏,但它并没有。
    你可以使用GitHub Pull Request扩展并按照原始问题中链接的步骤轻松重现上述情况。
nwsw7zdq

nwsw7zdq1#

我同意这个观点。我们的webview保持打开状态,但是没有人在监听消息,所以它就是不起作用。也就是说,通过postMessage发送的消息没有去任何地方。

我在想是否有人已经想出了解决办法。

ymdaylpp

ymdaylpp2#

我们目前的解决方法是在activate期间搜索孤立的webviews,并关闭/重新打开它们。
如果这对其他人有帮助:

const orphanedTabs = vscode.window.tabGroups.all
    .flatMap((tabGroup) => tabGroup.tabs)
    .filter((tab) => (tab.input as any)?.viewType.includes(<VIEW ID>));
  vscode.window.tabGroups.close(orphanedTabs);
  // ... reopen if needed

相关问题