Вызов расширения vscode для данных из веб-просмотра - PullRequest
0 голосов
/ 01 июля 2019

У меня есть список, который должен быть возвращен из расширения в поле ввода моей страницы веб-просмотра.

Это похоже на событие javascript, присутствующее в веб-просмотре, должно вызвать расширение для списка и затем использоватьэтот объект списка и показать данные списка в представлении.Как мне это сделать?

1 Ответ

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

В классе WebView есть метод для отправки сообщений в контент WebView и событие для получения сообщений от этого. См. Главу в документации vscode о передаче сообщений .

В вашем коде веб-просмотра вы можете получать сообщения с:

        // Handle the message inside the webview
        window.addEventListener('message', event => {

            const message = event.data; // The JSON data our extension sent

            switch (message.command) {
                case 'refactor':
                    count = Math.ceil(count * 0.5);
                    counter.textContent = count;
                    break;
            }
        });

В коде расширения вы можете обрабатывать сообщения из вашего веб-контента, например:

      // Handle messages from the webview
      panel.webview.onDidReceiveMessage(
        message => {
          switch (message.command) {
            case 'alert':
              vscode.window.showErrorMessage(message.text);
              return;
          }
        },
        undefined,
        context.subscriptions
      );

Чтобы отправить сообщение на добавочный номер, вам нужно использовать API vscode в коде веб-просмотра:

        (function() {
            const vscode = acquireVsCodeApi();
            const counter = document.getElementById('lines-of-code-counter');

            let count = 0;
            setInterval(() => {
                counter.textContent = count++;

                // Alert the extension when our cat introduces a bug
                if (Math.random() < 0.001 * count) {
                    vscode.postMessage({
                        command: 'alert',
                        text: '?  on line ' + count
                    })
                }
            }, 100);
        }())

И, наконец, отправка сообщения из расширения в контент веб-просмотра так же проста, как:

currentPanel.webview.postMessage({ command: 'refactor' });
...