允许在VSCode WebView扩展中弹出窗口的解决方法

时间:2019-06-20 19:09:37

标签: visual-studio-code vscode-extensions

我们创建了一个独特的VSCode WebView扩展,严格供我们内部使用。该WebView提供了捕获微服务API中生成的代码的域驱动设计模型的功能。 我们添加的类型编辑器之一支持JSON模式,并且我们利用OpenSource React组件来实现此编辑器。我们非常小心,不要使用WebView扩展来实现任何弹出窗口,但是,此JSON模式编辑器确实实现了许多模态对话框,当在我们的自定义VSCode WebView扩展中时,这些对话框不会出现。

我正在寻找解决VSCode WebView Extension中限制的方法。

enter image description here

3 个答案:

答案 0 :(得分:0)

据我所知,当前默认情况下,vscode webview默认会阻止弹出窗口,在webview中使用模式/弹出窗口的唯一方法是使用vscode.window.showInformationMessage(“ message”,{modal:true}),它可以解析或根据用户操作拒绝。

答案 1 :(得分:0)

您是正确的。为了解决此问题,我们将更改为滑动窗口。这确实有效。可惜的是,存在这种限制,因为它将限制依赖于通过模式对话框进行用户交互的第三方控件的使用。

答案 2 :(得分:0)

VS Code故意阻止Web视图中的模态。有关原因的更多详细信息,请参见this issue

  • Webviews应该无法发挥作用并影响其余的编辑器体验(部分原因是Webviews允许运行未与扩展一起安装的潜在不受信任的代码)
  • 本机模式不适合VS Code用户界面的其余部分,并且在功能上受到严重限制。

从Web视图收集用户输入的正确方法是将Web视图中的消息发送回调用VS Code的常规UI API(例如showQuickPickshowInformationMessage)的扩展。如果您使用的库不允许您注入自定义的提示方法,则可以尝试覆盖诸如window.alert()之类的全局变量,以将其连接到相应的VS Code API