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

标签 visual-studio-code vscode-extensions

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

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

enter image description here

最佳答案

VS Code 故意阻止 web View 中的模式。参见 this issue有关原因的更多详细信息,但总而言之:

  • Webviews 不应中断并影响其余的编辑器体验(部分原因是 webviews 允许运行未随扩展安装的潜在不受信任的代码)
  • native 模式不适合 VS Code UI 的其余部分,并且它们的功能受到严重限制。

从 webview 收集用户输入的正确方法是从 webview 将消息发送回调用 VS Code 的普通 UI API 的扩展,例如 showQuickPickshowInformationMessage。如果您使用的库不允许您注入(inject)自定义提示方法,那么您可以尝试覆盖全局变量,例如 window.alert() 以将它们连接到相应的 VS Code API

关于visual-studio-code - 在 VSCode WebView 扩展中允许弹出窗口的解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56692461/

相关文章:

visual-studio-code - 在 VSCode 扩展中改变代码的视觉表示

php - 是否可以使用Live-server for PHP并在保存时自动重载?

visual-studio-code - 基于 Web 的 VS 代码在浏览器中运行

visual-studio-code - 如何使用vscode扩展隐藏侧边栏中的时间线和大纲

visual-studio-code - 定义 "always wins"的 VSCode Scheme Syntax 规则

visual-studio-code - 对于 VS Code,可接受的已弃用 TextEditor.hide() 函数的替代方法是什么?

visual-studio-code - 如何通过语言服务器实现 quickfix

node.js - 如何将 TypeScript 1.6 与 Visual Studio Code 结合使用以获得生成器支持?

windows - Visual Studio Code 安装位置

visual-studio-code - 每次在 VS Code 中打开新的终端窗口时,如何运行一些命令?