Обходной путь для разрешения всплывающих окон в расширении VSCode WebView - PullRequest
1 голос
/ 20 июня 2019

Мы создали уникальное расширение VSCode WebView, исключительно для нашего внутреннего использования.Этот WebView предоставляет возможность захвата моделей, управляемых доменом, которые являются кодом, сгенерированным в Microservice API.Один из добавленных нами редакторов типов поддерживает схему JSON, и для реализации этого редактора мы использовали компонент OpenSource React.Мы были чрезвычайно осторожны, чтобы не создавать всплывающие окна с расширением WebView, однако этот редактор JSON Schema действительно реализует ряд модальных диалогов, которые не появляются внутри нашего собственного расширения VSCode WebView.

Я ищу способ обойти ограничение в расширении VSCode WebView.

enter image description here

Ответы [ 3 ]

0 голосов
/ 24 июля 2019

Вы правы.Чтобы решить эту проблему, мы переходим на раздвижные окна.Это работает.Жаль, что это ограничение существует, поскольку оно ограничит использование сторонних элементов управления, которые полагаются на взаимодействие с пользователем через модальное диалоговое окно.

0 голосов
/ 25 июля 2019

VS Код намеренно блокирует модалы в веб-просмотрах. См. эту проблему для получения более подробной информации о причинах, но вкратце:

  • Веб-просмотры не должны быть в состоянии вырваться и повлиять на остальную часть работы редактора (частично потому, что веб-просмотры позволяют запускать потенциально ненадежный код, который не был установлен с расширением)
  • Родные модалы не вписываются в остальную часть пользовательского интерфейса VS Code и строго ограничены в своих возможностях.

Правильный способ сбора пользовательского ввода из веб-просмотра - это отправить сообщение из вашего веб-просмотра обратно на ваше расширение, которое вызывает обычные API-интерфейсы интерфейса VS Code, такие как showQuickPick или showInformationMessage. Если используемая вами библиотека не позволяет вводить пользовательский метод запроса, вы можете попробовать переопределить глобальные переменные, такие как window.alert(), чтобы подключить их к соответствующему API кода VS

0 голосов
/ 23 июля 2019

Насколько я знаю, в настоящее время веб-просмотр vscode блокирует всплывающие окна по умолчанию, единственный способ использовать модальное / всплывающее окно в веб-просмотре - это использовать vscode.window.showInformationMessage ("message", {modal: true}), который либо разрешает, либо отклоняет в зависимости от действий пользователя.

...